Я пытаюсь установить некоторое программное обеспечение на машину с Linux (пакет rpy2 для Python, в частности, rpy2.robjects, если это имеет значение). Мне нужно, чтобы программное обеспечение искало общие библиотеки в моем локальном пространстве, а не в глобальных пространствах, таких как /usr/lib64. У меня нет прав администратора на этой машине. Моя проблема в том, что, хотя я установил LD_LIBRARY_PATH для указания на мое локальное пространство, программное обеспечение все равно переходит в /usr/lib64/независимо, где оно находит устаревшие библиотеки. В этих библиотеках отсутствуют некоторые необходимые объекты, поэтому они не работают. Что может иметь приоритет над LD_LIBRARY_PATH, и есть ли способ изменить/избавиться от этого? Спасибо.
Кстати, у кого-то на этом сайте был аналогичный вопрос год или больше назад, но его ответ касался переменной env RPATH и ее изменения с помощью утилиты chrpath. Мне вообще непонятно, что rpy2 использует RPATH, а chrpath кажется недоступным в моей системе.
Приложение: я пробовал работать с LD_DEBUG=libs. Получил много вывода, который выглядит так, как будто система ищет библиотеки в моем LD_LIBRARY_PATH и находит их. Вот где, кажется, начинаются проблемы:
/usr/local/lib64/R/library/methods/libs/methods.so: error: symbol lookup error:
undefined symbol: Rf_allocS4Object (fatal)
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/local/lib64/R/library/methods/libs/methods.so':
/usr/local/lib64/R/library/methods/libs/methods.so: undefined symbol: Rf_allocS4Object
Итак, я предполагаю, что проблема в том, что все, что находится в DLLpath, переопределяет LD_LIBRARY_PATH. Я попытался изменить это, добавив свои каталоги в os.environ['PATH'], но не смог. По-видимому, нет «DLLPATH», как я думал.
Ладно, это прогресс, я думаю. У кого-нибудь есть что-нибудь еще? Спасибо.