2013-08-20 23 views
8

Mam usługę w systemie Linux.Usługa Linux nie może załadować ścieżki biblioteki w /etc/ld.so.conf.d

Po uruchomieniu należy użyć usługi start lub start w init.d. Nie można załadować konfiguracji, która została zapisana w /etc/ld.so.conf.d/. Tak więc proces, który ładuje ścieżkę do biblioteki w /etc/ld.so.conf.d/. nie może zostać uruchomiona przez tę usługę.

Ale kiedy uruchamiam ten skrypt servcie w powłoce, działa dobrze.

Jak załadować ścieżkę do biblioteki w /etc/ld.so.conf.d/?

Wielkie dzięki.

+0

[Problem dotyczy pasków serwisowych wszystkich zmiennych środowiskowych, ale TERM, PATH i LANG] (http://unix.stackexchange.com/a/44378) Przydatna pomoc dotycząca łącza, dlaczego usługa nie działa. – JinruiDu

Odpowiedz

21

Czy ostatnio używasz ldconfig (jako root)? Istnieje pamięć podręczna współużytkowanych bibliotek, która jest aktualizowana przez ten program, a jeśli zaktualizowano plik w wersji /etc/ld.so.conf.d bez uruchamiania ldconfig, dane pamięci podręcznej mogą być nieaktualne.

+0

Masz na myśli, że muszę uruchomić ldconfig przed uruchomieniem usługi? Spróbuję. – JinruiDu

+2

Nie, musisz uruchomić 'ldconfig' po edycji'/etc/ld.so.conf' lub jednemu z plików w katalogu '/ etc/ld.so.conf.d'. Następnie, zakładając, że nie zmieniasz tych plików, zwykle nie musisz ponownie uruchamiać 'ldconfig'. –

+1

To nie działa. Uruchamiam ** ldconfig ** przed ** service myserv restart **. Nadal nie działa poprawnie. muszę 'LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/usr/local/myprog/lib export LD_LIBRARY_PATH ' Po tym, może to wykonać – JinruiDu