我在尝试安装名为“GenomicFeatures”的 R 包时遇到了问题,
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '$HOME/.R325/lib64/R/library/RCurl/libs/RCurl.so':
/lib64/libc.so.6: version `GLIBC_2.7' not found
我查了一下,root没有这样的库。
/usr/lib64
我注意到eyoung100 提出的善意建议,这可能会解决我的问题。我对unix/linux的了解还处于起步阶段,在我看来他建议使用迷你版的整个root,并将RPM包安装在“newroot”中。
我觉得他建议安装整个系统,有必要吗?
有什么建议吗?如果需要任何信息来解决问题,请告诉我。
答案1
另一个想法(这就是为什么我将其发布为新答案):
一些发行版从不同的地方加载库。例如,在 Debian 上,libc 不在 /usr/lib64 中,而是在 /lib/x86_64-linux-gnu 中。这不是兼容性问题,因为应用程序应该从系统为其配置的目录加载系统库。这个应用程序打破了这一点,它尝试从硬连线位置加载 libc,因此这是该应用程序开发人员的错。
检查你的 libc.so.6 在哪里(最容易通过
ldd /bin/bash
命令),然后简单地在 /usr/lib64 中创建到该目录的软链接(命令: ln -sv /my/libc/directory /usr/lib64 )。
答案2
该软件包至少需要 glibc 2.7 版本,该版本仍然很旧,但您的发行版似乎更旧。
如果 chroot 解决方案和系统升级均不可行,还有其他 2 种方法:
您只能升级系统上的 glibc。它们具有很强的向后兼容性,因此它可能不会破坏任何东西,但您仍然面临着系统损坏而无法修复的风险。
您可以将 glibc 文件从较新的 glibc 包提取到本地目录中,并仅使用该特定目录运行该进程。您可以使用 LD_LIBRARY_PATH 环境变量来执行此操作。知道这是一个 R 模块,不是由您直接调用,而是由 R 调用,您可能必须为该任务实现一些简单的 shellscript 包装器。