Как экспортировать LD_LIBRARY_PATH всем пользователям и системным службам

12

Я хочу экспортировать LD_LIBRARY_PATHв системные службы и всех пользователей. Системные сервисы запускаются до входа в систему, поэтому .bashrcне применяется.

Как этого добиться?

linquize
источник
1
Не могли бы вы уточнить, какую именно проблему вы пытаетесь решить?
Кит

Ответы:

20

Вам не нужно. Добавьте каталог /etc/ld.so.confили новый файл в /etc/ld.so.conf.d/зависимости от дистрибутива.

После этого вы должны запустить (по крайней мере на Redhat) ldconfigот имени пользователя root.

В качестве предостережения, вы должны быть осторожны, какие библиотеки вы добавляете в системный путь к общей библиотеке (через среду, ld.so.conf или вставляя в / usr / local / lib). В частности, вы остерегаетесь двух разных версий одной и той же библиотеки с одним и тем же именем. Например, если у вас есть libfoo.0.1 (soname libfoo.0), установленная через dpkg / rpm / etc., Вам не нужен libfoo.0.2 (также soname libfoo.0) в каталоге пользовательских библиотек.

(На самом деле не так-то просто получить общесистемную переменную среды. Вы можете получить большинство пользовательских входов в систему /etc/environment. Сценарии будут зависеть от вашей системы инициализации, но (например) с sysv init в Debian вы можете вставить его /etc/default/rcS. бегите прямо из inittab, ну, я не думаю, что вы можете.)

derobert
источник
@ bahamat Я полагаю, из-за совпадения правок, вы забрали абзац из моего ответа. Я добавлю это обратно ..
Дероберт
Нет, я просто удалил это, потому что "вам не нужно" уже подводит итоги, и это гораздо более кратко.
Багамат
@bahamat Проверьте журнал редактирования, unix.stackexchange.com/posts/46620/revisions ... Я думаю, что произошло то, что мы оба нажали на ссылку редактирования, затем я отправил свое изменение (дополнительный абзац), а затем вы отправили свое изменение (который, конечно, не включал дополнительный абзац). Похоже, StackExchange должен обнаружить это и громко предупредить, но, очевидно, нет ...
Дероберт
Нет, я просто явно удалил этот абзац, потому что считал его ненужным. Я не делал никаких других изменений. Наши правки были на расстоянии 6 м друг от друга, а тот, что последовал за мной, был на 12 м позже. Это не было столкновение.
Багамат
@bahamat Ах, если оставить комментарий к редактированию, это
устранит
3

Вы можете добавить каждый путь в файл, а /etc/ld.so.conf.dзатем запустить:

ldconfig -v 

Затем загрузите их.

Персидский залив
источник