Обновить кеш ldconfig без прав root
$ uname -a
Linux xhost10.bcgsc.ca 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
$ /sbin/ldconfig --version
ldconfig (GNU libc) 2.5
Я устанавливаю несколько бинарных файлов и библиотек локально, так как у меня нет root-доступа.
Некоторые программы должны динамически связываться с общей библиотекой в нестандартном месте во время выполнения.
При выполнении программа возвращает:
$ path/to/cc1
path/to/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
Я добавил пути к библиотекам $LD_LIBRARY_PATH
, но я не могу обновить ldconfig
кеш без рут-доступа...
Есть ли пользовательский /etc/ld.so.cache
?
Или, в более общем смысле, можно ли "замаскировать" файл конфигурации системы файлом конфигурации пользователя?
1 ответ
Кэш ldconfig применяется только к пути, указанному в /etc/ld.so.conf или /etc/ld.so.conf.d. Так как они не доступны для записи для пользователей без полномочий root, вы не можете использовать их для повышения скорости запуска исполняемых файлов, установленных без прав root без помощи root (но даже в этом случае было бы плохой идеей добавить к ним файл, доступный для записи пользователю). общесистемные пути поиска в библиотеке).
Поэтому для этих случаев вам нужно использовать либо переменную среды LD_LIBRARY_PATH, либо rpath/runpath в исполняемом файле или библиотеке, которая зависит от библиотек в пути не по умолчанию. Я не знаю каких-либо различий в скорости между LD_LIBRARY_PATH и rpath/runpath, но преимущество rpath/runpath заключается в том, что они влияют только на определенные исполняемые файлы и, следовательно, с меньшей вероятностью вызывают проблемы для других программ.
В linux/unix нет общего способа замаскировать файл конфигурации системы и использовать вместо него предоставленный пользователем файл. Фактически это то, что модель безопасности Unix активно должна предотвращать, чтобы избежать различных видов повышения привилегий. По этой причине даже многие переменные окружения отключаются, например, для исполняемых файлов suid. У многих программ есть свои способы указать переопределяющую пользовательскую конфигурацию, у некоторых более сложных также есть способы для системного администратора устанавливать обязательные параметры, которые не могут быть переопределены.