Linuxマシンにいくつかのソフトウェアをインストールしようとしています(Pythonのrpy2パッケージ、特に重要な場合はrpy2.robjects)。/ usr / lib64のようなグローバル空間ではなく、ローカル空間で共有ライブラリを探すためのソフトウェアが必要です。このマシンの管理者権限がありません。私の問題は、ローカルスペースを指すようにLD_LIBRARY_PATHを設定しても、ソフトウェアが/ usr / lib64 / whateverに移動し、古いライブラリが検出されることです。これらのライブラリには必要なオブジェクトがいくつかないため、失敗します。LD_LIBRARY_PATHよりも優先される可能性があるものは何ですか?それを変更/削除する方法はありますか?ありがとう。
ところで、このサイトの誰かが1年以上前に同様の質問をしましたが、彼の答えは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」はありません。
OK、それは進歩だと思います。誰か他に何かありますか?ありがとう。