【发布时间】:2012-07-24 09:55:12
【问题描述】:
我正在尝试在 Linux 机器上安装一些软件(python 的 rpy2 包,特别是 rpy2.robjects,如果重要的话)。我需要该软件在我的本地空间中查找它的共享库,而不是在像 /usr/lib64 这样的全局空间中。我在这台机器上没有管理员权限。我的问题是,即使我将 LD_LIBRARY_PATH 设置为指向我的本地空间,该软件仍然会转到 /usr/lib64/whatever,它会在其中找到过期的库。这些库缺少一些它需要的对象,所以它失败了。什么可能优先于 LD_LIBRARY_PATH,有没有办法改变/摆脱它?谢谢。
顺便说一句,这个网站上有人在一年前或更多年前有过类似的问题,但他的回答涉及环境变量 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”,就像我想的那样。
好吧,我猜这就是进步。有人还有什么吗?谢谢。
【问题讨论】:
标签: python linux r rpy2 installation