“/lib64/libc.so.6:版本‘GLIBC_2.7’未找到”安装 R 包时出错

“/lib64/libc.so.6:版本‘GLIBC_2.7’未找到”安装 R 包时出错

我在尝试安装名为“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 种方法:

  1. 您只能升级系统上的 glibc。它们具有很强的向后兼容性,因此它可能不会破坏任何东西,但您仍然面临着系统损坏而无法修复的风险。

  2. 您可以将 glibc 文件从较新的 glibc 包提取到本地目录中,并仅使用该特定目录运行该进程。您可以使用 LD_LIBRARY_PATH 环境变量来执行此操作。知道这是一个 R 模块,不是由您直接调用,而是由 R 调用,您可能必须为该任务实现一些简单的 shellscript 包装器。

相关内容