Jak wyeksportować LD_LIBRARY_PATH do wszystkich użytkowników i usług systemowych


12

Chcę eksportować LD_LIBRARY_PATHdo usług systemowych i wszystkich użytkowników. Usługi systemowe są uruchamiane przed zalogowaniem, więc .bashrcnie dotyczy.

Jak to osiągnąć?


1
Czy mógłbyś wyjaśnić, jaki jest rzeczywisty problem, który próbujesz rozwiązać?
Keith,

Odpowiedzi:


20

Nie musisz. Dodaj katalog do /etc/ld.so.conflub nowy plik, w /etc/ld.so.conf.d/zależności od dystrybucji.

Następnie musisz uruchomić (przynajmniej na Redhat) ldconfigjako root.

Ostrzegając, musisz uważać, które biblioteki dodajesz do ścieżki do bibliotek współużytkowanych w systemie (przez środowisko, ld.so.conf lub umieszczając / usr / local / lib). W szczególności wystrzegasz się dwóch różnych wersji tej samej biblioteki z tą samą soname. Na przykład, jeśli masz bibliotekę libfoo.0.1 (soname libfoo.0) zainstalowaną za pomocą dpkg / rpm / etc., Nie chcesz libfoo.0.2 (również soname libfoo.0) w swoim niestandardowym katalogu biblioteki.

(W rzeczywistości nie jest tak łatwo wyciągnąć ogólnosystemową zmienną środowiskową. Większość logowań użytkownika można uzyskać /etc/environment. Skrypty będą zależeć od twojego systemu init, ale (na przykład) z sysv init na Debianie, możesz to wprowadzić /etc/default/rcS. Wszystko zabrakło inittab, no cóż, nie sądzę, żebyś mógł.)


@ bahamat Zgaduję, że z powodu nakładania się edycji skończyłeś wyciąganie akapitu z mojej odpowiedzi. Dodam to z powrotem ..
derobert

Nie, właśnie go usunąłem, ponieważ „nie musisz” już to podsumowuje i jest to o wiele bardziej zwięzłe.
bahamat

@bahamat Sprawdź dziennik edycji, unix.stackexchange.com/posts/46620/revisions ... Myślę, że tak się stało, że oboje kliknęliśmy link edytuj, następnie przesłałem swoją zmianę (dodatkowy akapit), a następnie przesłałeś swoją zmianę (który oczywiście nie zawierał dodatkowego akapitu). Wygląda na to, że StackExchange powinien to wykryć i głośno ostrzec, ale najwyraźniej nie ...
derobert

Nie, po prostu wyraźnie usunąłem ten akapit, ponieważ uważałem go za niepotrzebny. Nie wprowadziłem żadnych innych zmian. Nasze zmiany były w odległości 6 m od siebie, a ta, która pojawiła się po mnie, miała 12 m później. To nie była kolizja.
bahamat

@ bahamat Ah, pozostawienie komentarza do edycji rozwiałoby zamieszanie ...
derobert

3

Możesz dodać każdą ścieżkę do pliku, /etc/ld.so.conf.da następnie uruchomić:

ldconfig -v 

Następnie załaduj je.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.