जब स्रोत से tmux का निर्माण हो रहा है तो वह परिवाद क्यों नहीं पा सकता है?


68

मैं एक ऐसी मशीन पर tmux स्थापित करना चाहता हूं, जहां मेरा रूट एक्सेस नहीं है। मैंने पहले से ही libevent को संकलित किया है और इसे स्थापित किया है $HOME/.bin-libeventऔर अब मैं tmux संकलित करना चाहता हूं, लेकिन कॉन्फ़िगर हमेशा के साथ समाप्त होता है configure: error: "libevent not found", भले ही मैंने libevent निर्देशिका को Makefile.amसंशोधित करके इंगित करने का प्रयास किया LDFLAGSऔर CPPFLAGS, लेकिन कुछ भी काम नहीं करता है।

मैं अपने घर को परिवाद के लिए देखने की प्रणाली को कैसे बता सकता हूं?


एक विकल्प dtach की जांच करना है । सुंदर जब आप वियोज्य सत्र चाहते हैं, लेकिन जड़ नहीं है और सांख्यिकीय रूप से संकलन करने के लिए समय नहीं है।
सोनिया हैमिल्टन

यदि आप RHEL 6.x पर हैं, तो रिपॉज में एक पूर्व संकलित tmux है।
मिर्च

जवाबों:


63

प्रयत्न, कोशिश:

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

(मुझे यकीन है कि ऑटोकॉन्फ़ के साथ लाइब्रेरी पथ को कॉन्फ़िगर करने का एक बेहतर तरीका होना चाहिए। आमतौर पर एक --with-libevent=dirविकल्प होता है। लेकिन यहां, ऐसा लगता है कि ऐसा कोई विकल्प नहीं है।)


4
यह वह दृष्टिकोण है जिसने makeआखिरकार काम किया। मैंने अन्य पर्यावरण चर स्थापित करने और स्थापित करने की कोशिश की prefixऔर exec-prefix, लेकिन एक बार जब मैंने इन झंडों को शामिल किया तो वास्तव में इसका निर्माण हुआ।
विझौंसेल्स

झंडे के लिए मैं कई निर्देशिकाओं के बारे में कैसे बताऊंगा? मैंने कोशिश की ./configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir"लेकिन कोई सफलता नहीं
lucaswxp

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

मैं इस सवाल का जवाब का इस्तेमाल किया और libevent not foundत्रुटि दूर चला गया, लेकिन अब मैं के साथ एक ही मिलता है ncurses: curses not found। मेरे libeventऔर साथ ही ncursesस्थापनाएं दोनों हैं$HOME/.local/
आलोक

के लिए libevent, का उपयोग करें LIBEVENT_CFLAGSऔर के LIBEVENT_LIBSबजाय CFLASGऔर LDFLAGS। के लिए ncurse, उपयोग करें LIBTINFO_CFLAGSऔर LIBTINFO_LIBS@ अलोक
जोंगसू लियाम किम

9

मुझे एक समान समस्या हो रही थी और पता चला कि दौड़ने के बाद sudo yum install libevent-develमैं सफलतापूर्वक tmux बनाने और स्थापित करने में सक्षम था।

EDIT: यदि आप इसे Red Hat मशीन पर स्थापित कर रहे हैं, तो आपको Red Hat Network पर अपने सर्वर के लिए चैनलों के चयन की आवश्यकता होगी और RHEL सर्वर वैकल्पिक चैनल को जोड़ना होगा। यह आपको libevent के लिए -devel संकुल तक पहुँच देगा (आधार और अनुपूरक चैनल इसे प्रदान नहीं करते हैं)।


3
यह इसे ठीक करने का सामान्य तरीका होगा, लेकिन इस मामले में यह "एक मशीन थी, जहां मेरी जड़ें नहीं हैं"
माइकल मिरोज़ेक

इससे मुझे मदद मिली। मैं जड़ नहीं था और मैंने डेवेल लिब स्थापित नहीं किया था।
पॉलिम

टार फाइल के रूप में आपको डेवेल लीब कहां मिलता है?
अरिल्ल 1212 414

1
अपने फ़ेडोरा मशीन के लिए, मुझे sudo yum install ncurses-devel के अलावा sudo yum को libevent-devel स्थापित करना होगा
Mustakimur Rahman

6

आरएचईएल 5.4 पर मेरे पास एक ही मुद्दा था और वास्तव में पाया गया कि परिवाद स्थापित है लेकिन कोई libevent.so सिम्लिंक नहीं है, केवल पुस्तकालय का वास्तविक संस्करण है:

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

इसलिए, ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.soकुछ भी स्थापित करने या बदलने की आवश्यकता के बिना मेरे लिए बहुत अच्छा काम करता है। पता नहीं क्यों RedHat के libevent rpm ने सिमलिंक नहीं बनाया। शायद रिपोर्ट करने के लिए एक बग?

लेकिन अब, यह इसके लिए शिकायत कर रहा है error: event.h: No such file or directory:।


मैं एक ही सटीक त्रुटि मिली: error: event.h: No such file or directory
gkb0986

मैं आरएचईएल 6 पर हूं, और मैंने इसे उपयोगकर्ता फ़ोल्डर में स्थापित करने के लिए बस डाउनलोड और संकलित संकलन किया है। फिर मैंने @ Stéphane Gimenez की ट्रिक का इस्तेमाल करके इसे कंपाइल किया। इसे चालू करने के लिए, मैं @_zcietrzewiacz द्वारा दिए गए LD_PRELOAD ट्रिक के साथ उपनाम देता हूं tmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux':। एक जादू की तरह काम करता है!
सीएसएल

1
यदि आप अपने आप को सिम्बलिंक के साथ गड़बड़ कर रहे हैं या मैन्युअल रूप से सिस्टम डायरेक्टरी में चीजों को कॉपी कर रहे हैं, तो इसे करने का एक बेहतर तरीका है।
Kusalananda

3

Tmux (या किसी भी प्रोग्राम) के कॉन्फ़िगरेशन और संकलन से पहले आपको यह बताने की आवश्यकता है कि यह उन पुस्तकालयों को कहां मिल सकता है जिनकी इसे जरूरत है। यदि आपने कुछ पुस्तकालय गैर-मानक स्थान पर स्थापित किए हैं, तो आप यह LD_LIBRARY_PRELOADबताने के लिए पर्यावरण चर का उपयोग कर सकते हैं , जहां कुछ पुस्तकालय स्थित हैं।

मैं आपका मामला:

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

और फिर कॉन्फ़िगरेशन / संकलन पर जाएं।

बाद में, बाइनरी को यह भी जानना होगा कि आपकी अतिरिक्त लाइब्रेरी कहाँ मिल सकती है, इसलिए आपको exportस्टेटमेंट को अपने .bashrc(यदि बैश आपके लॉगिन शेल है) में रखना होगा ।


धन्यवाद, लेकिन दुख की बात यह काम नहीं करता है, एक ही त्रुटि संदेश। संस्करण संख्या libevent-2.0.12 जो काम करना चाहिए है
वोल्कर

तब ऐसा लगता है कि आपके परिवाद संकलन में कोई समस्या है। क्या find .bin-libevent -name 'libevent.so*'दिखाता है?
रोजीसेट्रेजियाकज

$ find .bin-libevent -name 'libevent.so*'पाता है.bin-libevent/lib/libevent.so
volker

:) फिर आपको निर्देशिका में $HOME/.bin-libevent/lib(उत्तर को अद्यतन करना) इंगित करना चाहिए
rozcietrzewiacz

हां, मुझे डर है कि मैंने पहले ही कोशिश कर ली थी कि अभी भी कोई बदलाव नहीं हुआ है। मैं काफी हैरान और निराश हूं।
वोल्कर

1

Https://gist.github.com/ryin/3106801 पर एक जिस्ट है :

#!/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
मेरे पास एक कस्टम स्थान पर इंस्टॉल किए गए शाप थे (मैं लक्ष्य प्रणाली पर एक व्यवस्थापक नहीं हूं), और यह महसूस नहीं किया कि ncursesजो कुछ भी / लाइब्रेरी पथ आपके द्वारा निर्दिष्ट किया गया है, उसके उपनिर्देशिका में खुद को स्थापित करता है । अजीब डिजाइन विकल्प। इसने मेरे लिए इसे ठीक कर दिया।
वबादार्ट

0

मेरे पास एक ही समस्या है और ऐसा लगता है कि सबसे अधिक उत्तर दिया गया जवाब मेरे काम नहीं आया। मैं फेडोरा 22 वर्कस्टेशन का उपयोग कर रहा हूं। यहाँ मैंने इसे ठीक करने के लिए क्या किया है: 1. libevent-develपैकेज स्थापित करें । 2. ncurses-develपैकेज स्थापित करें

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

पहला कोई event.hसमस्या का समाधान नहीं करेगा और दूसरा हल करेगा कि शाप की समस्या का पता न चले। BTW, ऊपर सॉफ्टलिंक विधि मेरे लिए भी काम करती है ./configure


यकीन नहीं हो रहा है कि यह घट गया। इसने मेरे लिए एक CentOS सिस्टम पर मुद्दा तय किया।
6

0

स्वीकृत उत्तर अच्छा है, लेकिन कम से कम tmux 2.8 के रूप में पर्यावरण चर का उपयोग करके libevent स्थान निर्दिष्ट करने के लिए समर्थन है।

पहले वांछित स्थान पर परिवाद स्थापित करें। मैंने cmake का उपयोग किया क्योंकि मुझे ऑटोकॉन्फ़ की समस्या थी

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

फिर tmux का निर्माण और स्थापित करें:

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

पर्यावरण चर LIBEVENT_CFLAGSओवरराइड्स pkg-configमें libevent के लिए सेटिंग्स शामिल हैं, और LIBEVENT_LIBSलिंकर ध्वज सेटिंग्स को ओवरराइड करता है।


-3

CentOS 6 पर, /opt/libeventकमांड के साथ डायरेक्टरी में लिबवेंट को संकलित और स्थापित करें :

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

फिर, मेरा व्यवहार स्थापित करें (इस मामले में PgBouncer था)

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

आप जहाँ चाहें निर्देशिका बदल सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.