Instaluję program na serwerze jako użytkownik inny niż root. W szczególności jest to Tmux 1.5, ale moim zdaniem powinno to dotyczyć ogólnie wszystkich programów zainstalowanych lokalnie (wymieniam nazwę programu, na wypadek gdyby ten problem nie był moim błędem).
Program wymaga zainstalowania niektórych bibliotek zależnych (np. Libevent i ncurses). Więc zainstalowałem je oba lokalnie, ponieważ nie mam dostępu do roota
cd $HOME/library/installation/folder
DIR=$HOME/local
./configure --prefix=$DIR
#... make ... make install
Teraz, aby zainstalować program, musiałem również dołączyć pakiety bibliotek:
cd $HOME/program/installation/folder
./configure --prefix=$DIR CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib"
#... make ... make install
Ok, więc to instaluje program bez problemów do $ HOME / local / bin, ale jeśli uruchomię plik wykonywalny: $ HOME / local / bin / tmux, pojawia się następujący błąd:
tmux: błąd podczas ładowania bibliotek współdzielonych: libevent-2.0.so.5: nie można otworzyć pliku obiektu współdzielonego: brak takiego pliku lub katalogu
Wydaje mi się, że program nie może znaleźć pożądanych bibliotek, ale plik libevent-2.0.so.5 rzeczywiście istnieje w $ HOME / local / lib, jak określono w opcjach konfiguracji. Zastanawiam się, jak mogę uruchomić program, aby rozpoznał zainstalowaną bibliotekę. Próbowałem umieścić dowiązania symboliczne w $ HOME / lib, $ HOME / bin i $ HOME / local / bin, ale żadne z nich nie zadziałało. Wszelkie pomysły i sugestie będą mile widziane
-R $DIR/lib
żeCFLAGS
jest w trakcie budowytmux
(i nielibevent
). To mi nie pomogło - był jakiś końcowy błąd z gcc, który powiedział, że nie może rozpoznać-R
(próbowałem również bez spacji między-R
i$DIR
). ./configure --disable-shared To działało, aktualizacjaLD_LIBRARY_PATH
również działało. Skończyło się na zrobieniulibevent
ponownie z powyższą--disable-shared
opcją.