Установка библиотек в нестандартное место и использование их для установки программного обеспечения

Я пытаюсь установить программное обеспечение на кластер под управлением Linux без рута. Однако для установки программного обеспечения требуются некоторые нестандартные библиотеки. Я установил необходимые библиотеки в свой домашний каталог. Когда я использовал ./configure для компиляции исходного кода программного обеспечения, я получил сообщение об ошибке, в котором говорилось, что не удалось найти файлы библиотеки. Я попытался использовать CPPFLAGS, LDFLAGS и LD_LIBRARY_PATH, чтобы указать компилятору, где найти библиотеки, но это не сработало.

Как я могу установить нестандартную библиотеку без прав администратора и указать компилятору, где найти эту библиотеку? Должен ли я сделать то же самое и для других библиотек?


person andy    schedule 11.10.2014    source источник
comment
Какой дистрибутив вы используете?   -  person Gutblender    schedule 11.10.2014
comment
Red Hat Enterprise Linux Server версии 5.5 (Tikanga)   -  person andy    schedule 12.10.2014


Ответы (2)


Я боюсь, что точный процесс для этого полностью зависит от того, как работает реальный скрипт программы, и/или Makefile, и/или код. Не существует универсального ответа, который работает со всеми существующими программными пакетами. Сценарий конфигурации каждого из них уникален и отличается.

Отчасти это также зависит от того, как библиотеки устанавливаются в нестандартном расположении. Довольно часто пакет библиотеки будет включать один из нескольких механизмов конфигурации, которые должны использовать приложения, использующие библиотеку, чтобы настроить себя на библиотеку; часть которого включает в себя необходимое моджо для связывания программного приложения, чтобы поместить правильный RPATH в исполняемый файл программного приложения, чтобы оно могло загружать библиотеки из нужного места; обычно это включает в себя упомянутые вами переменные. Одна вещь, которую вы не упомянули, это указание флага -R для установки RPATH в исполняемом файле.

Таким образом, единственный ответ здесь заключается в том, чтобы вы продолжали копаться в сценариях конфигурации библиотеки и приложения и пытаться понять это. Другого способа сделать это, кроме грубой силы, просто нет. Во многих случаях просто невозможно сделать то, что вы пытаетесь сделать «из коробки», и возникает необходимость исправить тот или иной сценарий настройки, чтобы получилось «нужное».

person Sam Varshavchik    schedule 11.10.2014

Установите PKG_CONFIG_PATH при создании двоичных файлов, которые связываются с ранее установленными библиотеками:

export PKG_CONFIG_PATH="/home/user/dir/install/lib/pkgconfig:$PKG_CONFIG_PATH"

При выполнении двоичных файлов, скомпилированных для этих библиотек, установите LD_LIBRARY_PATH

export LD_LIBRARY_PATH="/home/user/dir/install/lib:$LD_LIBRARY_PATH"

Если вы запускаете двоичные файлы, установленные в нестандартных местах, также установите PATH:

export PATH="/home/user/dir/install/sbin:/home/user/dir/install/bin:$PATH"

Возможно, вы захотите установить последние два в .bashrc для использования в будущем.

Помещение предыдущих настроек переменных в конец строки дает более высокий приоритет нестандартной библиотеке и двоичным расположениям, если файлы существуют в обоих местах. Подумайте о том, чтобы переключить их, если вы предпочитаете использовать программы, установленные через менеджер пакетов.

person andrew-e    schedule 14.09.2015