Neden gcc kaynağından tmux'u kurarken özgürlüğü bulamıyor?


68

Tmux'u root erişimi olmayan bir makineye kurmak istiyorum. Zaten Libevent derlenmiş ve bunu yüklü $HOME/.bin-libeventve şimdi tmux derlemek istiyorum, ama her zaman biter yapılandırmak configure: error: "libevent not found"I Libevent dizinine işaret etmeye çalıştı rağmen Makefile.amdeğiştirerek LDFLAGSve CPPFLAGSfakat işe yaramış görünmüyor.

Sisteme, özgürlüğü hedefleyen evime bakmasını nasıl söyleyebilirim?


Bir alternatif dtach'ı araştırmaktır . Ayrılabilir oturumlar istediğinizde kullanışlıdır, ancak kök yok ve tmux'u statik olarak derlemek için zamanınız yok.
Sonia Hamilton

RHEL 6.x kullanıyorsanız, depolarda önceden derlenmiş bir tmux var.
Chili,

Yanıtlar:


63

Deneyin:

DIR="$HOME/.bin-libevent"
./configure CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib"

(Kütüphane yollarını autoconf ile yapılandırmanın daha iyi bir yolu olması gerektiğine eminim. Genellikle bir --with-libevent=dirseçenek var. Fakat burada, böyle bir seçenek yok gibi görünüyor.)


4
makeSonunda işe yarayan yaklaşım budur . Diğer ortam değişkenleri belirlemek ve ayarı çalıştı prefixve exec-prefixama dahil kez bu bayraklar inşa var aslında şeyler.
saat

Bayraklar için birden fazla dizin belirlemeye nasıl giderim? Denedim ./configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir"ama başarılı
olamadım

1
@lucaswxpCFLAGS="-Idir1 -Idir2 -Idir3" LDFLAGS="-Ldira -Ldirb -Ldirb"
Kusalananda

Ben bu cevabı kullanılmış ve libevent not foundhata uzağa gitti, ama şimdi aynı olsun ncurses: curses not found. Hem benim libeventhem de ncurseskurulumlarım ikisi de $HOME/.local/
içeride

İçin libevent, kullanmak LIBEVENT_CFLAGSve LIBEVENT_LIBSyerine CFLASGve LDFLAGS. Için ncurse, kullanın LIBTINFO_CFLAGSve LIBTINFO_LIBS@Aalok
Jongsu Liam Kim

9

Benzer bir problem yaşıyordum ve çalıştıktan sonra sudo yum install libevent-develbaşarılı bir şekilde tmux yapabildiğimi ve yüklediğimi keşfettim .

EDIT: Bunu bir Red Hat makinesine yüklüyorsanız, Red Hat Ağında sunucunuz için kanal seçimini ziyaret etmeniz ve RHEL Server İsteğe Bağlı kanalını eklemeniz gerekir. Bu size libevent için -devel paketlerine erişim sağlayacaktır (temel ve ek kanallar sağlamaz).


3
Bunu düzeltmenin normal yolu bu olurdu, ancak bu durumda "kök erişimimin olmadığı bir makine" idi
Michael Mrozek

Bu bana yardımcı oldu. Kök değildim ve devel kütüphanesini yüklememiştim.
polim

devel lib'i tar dosyası olarak nereden edinebilirsin?
arrowill12

1
Benim fötr makine için, ben de sudo yum Libevent-devel yüklemek yanında ncurses devel yüklemek sudo yum için gerekli
Mustakimur Rahman

6

RHEL 5.4'te de aynı sorunu yaşadım ve aslında libevent'in kurulu olduğunu öğrendim ancak libevent.so sembolik bağlantı yok, kütüphanenin sadece gerçek versiyonu:

/usr/lib64/libevent-1.1a.so.1
/usr/lib64/libevent-1.1a.so.1.0.2

Bu yüzden, ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.sohiçbir şey kurmanıza veya değiştirmenize gerek kalmadan benim için oldukça iyi çalışıyor. RedHat'ın libevent rpm'in neden sembolik bağlantı oluşturduğunu bilmiyoruz. Belki bildirmek için bir hata?

Ama şimdi, bunun için şikayetçi: error: event.h: No such file or directory.


Aynı kesin hata var: error: event.h: No such file or directory.
gkb0986

Ben RHEL 6’dayım ve az önce onu indirip bir kullanıcı klasörüne yükleyerek libevent'i derledim. Sonra @ Stéphane Gimenez'in numarasını kullanarak derlemeye başladım. Çalıştırmak için, @rozcietrzewiacz: 'ın verdiği LD_PRELOAD numarasıyla takma ad veriyorum tmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux'. Tıkır tıkır çalışıyor!
csl

1
Kendinizi sembolik bağlarla karıştırdığınızı veya sistem dizinlerinde bir şeyleri elle kopyaladığınızı tespit ederseniz, bunu yapmanın daha iyi bir yolu vardır.
Kusalananda

3

Tmux'un (veya herhangi bir programın) yapılandırılmasından ve derlenmesinden önce, ihtiyaç duyduğu kütüphaneleri nerede bulabileceğini söylemelisiniz. Bazı kitaplıkları standart olmayan bir yere kurduysanız LD_LIBRARY_PRELOAD, bazı kitaplıkların nerede olduğunu söylemek için ortam değişkenini kullanabilirsiniz .

Ben senin davan:

$ export LD_LIBRARY_PRELOAD=$HOME/.bin-libevent/lib

Ve sonra yapılandırma / derleme ile devam edin.

Daha sonra, ikili dosyaya ek kütüphanelerinizin nerede bulunabileceğini de bilmeniz gerekecektir, bu yüzden exportifadeyi içine koymanız gerekir .bashrc(bash giriş kabuğunuzsa).


Teşekkürler, ama ne yazık ki bu işe yaramadı, aynı hata mesajı. Sürüm numarası çalışması gereken libevent-2.0.12'dir
volker

Öyleyse, libevent derlemenizde bir sorun var gibi görünüyor. Ne find .bin-libevent -name 'libevent.so*'gösterir?
rozcietrzewiacz

$ find .bin-libevent -name 'libevent.so*'bulur.bin-libevent/lib/libevent.so
volker

:) O zaman dizine işaret etmelisiniz $HOME/.bin-libevent/lib(cevabı güncelledi)
rozcietrzewiacz

Evet, korkarım bunu daha önce de denedim, hala bir değişiklik yok. Ben oldukça şaşkın ve sinirliyim.
volker

1

Https://gist.github.com/ryin/3106801 adresinde bir özür var :

#!/bin/bash

# Script for installing tmux on systems where you don't have root access.
# tmux will be installed in $HOME/local/bin.
# It's assumed that wget and a C/C++ compiler are installed.

# exit on error
set -e

TMUX_VERSION=1.8

# create our directories
mkdir -p $HOME/local $HOME/tmux_tmp
cd $HOME/tmux_tmp

# download source files for tmux, libevent, and ncurses
wget -O tmux-${TMUX_VERSION}.tar.gz http://sourceforge.net/projects/tmux/files/tmux/tmux-${TMUX_VERSION}/tmux-${TMUX_VERSION}.tar.gz/download
wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz

# extract files, configure, and compile

############
# libevent #
############
tar xvzf libevent-2.0.19-stable.tar.gz
cd libevent-2.0.19-stable
./configure --prefix=$HOME/local --disable-shared
make
make install
cd ..

############
# ncurses  #
############
tar xvzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=$HOME/local
make
make install
cd ..

############
# tmux     #
############
tar xvzf tmux-${TMUX_VERSION}.tar.gz
cd tmux-${TMUX_VERSION}
./configure CFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include/ncurses -L$HOME/local/include"
CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/include/ncurses -L$HOME/local/lib" make
cp tmux $HOME/local/bin
cd ..

# cleanup
rm -rf $HOME/tmux_tmp

echo "$HOME/local/bin/tmux is now available. You can optionally add $HOME/local/bin to your PATH."

1
Ayrıca, özel bir konuma küfürler yükledim (hedef sistemde yönetici değilim) ve belirlediğiniz ncursesherhangi bir içerme / kütüphane yolunun alt dizinine kurulduğunu anlamadım . Garip tasarım seçimi. Bu benim için düzeltti.
wbadart

0

Bende de aynı problem var ve en çok cevaplanan cevap benim için işe yaramadı. Fedora 22 Workstation'ı kullanıyorum. İşte bunu düzeltmek için ne yaptım: 1. libevent-develPaketi yükleyin . 2. ncurses-develpaketi yükleyin

$ dnf install libevent-devel`
$ dnf install ncurses-devel

Birincisi hiçbir event.hsorunu çözmeyecek, ikincisi de küfür sorununu bulamayacak. Btw, yukarıdaki softlink yöntemi de benim için çalışır ./configure.


Neden düşürüldüğünden emin değilim. Bir CentOS sisteminde benim için sorunu düzeltti.
Dharmit

0

Kabul edilen cevap iyidir, ancak en azından tmux 2.8'den itibaren ortam değişkenlerini kullanarak serbest konum belirtme desteği vardır.

İlk önce libevent'i istediğiniz yere kurun. Cmake kullandım çünkü autoconf ile bir sorunum vardı

cmake -DCMAKE_INSTALL_PREFIX=$HOME/usr ..
make install

Sonra tmux'u derleyip kurun:

export LIBEVENT_CFLAGS=-I${HOME}/usr/include 
export LIBEVENT_LIBS="-L${HOME}/usr/lib -levent" 
./configure --prefix=$HOME/usr
make install

Ortam değişkeni LIBEVENT_CFLAGSgeçersiz kılmalar pkg-config, libevent ayarlarını içerir ve LIBEVENT_LIBSbağlayıcı bayrağı ayarlarını geçersiz kılar.


-3

CentOS 6'da /opt/libeventşu komutu kullanarak libevent'i derleyin ve kurun :

# ./configure --prefix=/opt/libevent
# make
# make install

Ardından uygulamamı yükle (bu durumda PgBouncer)

# ./configure --prefix=/opt/ *--with-libevent=/opt/libevent/*

Dizinleri istediğiniz yerde değiştirebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.