我有一台 64 位 Redhat Enterprise Linux 服务器(版本 6.3),它不允许我安装 glibc.i686 模块以实现 32 位兼容性。当我yum install glibc.i686
以 root 身份尝试时,它给出了一长串错误,如下所示:
Transaction Check Error:
file /lib/libc.so.6 from install of glibc-2.12-1.80.el6_3.6.i686 conflicts with file from package libc6-6:2.15-1.x86_64
file /lib/libm.so.6 from install of glibc-2.12-1.80.el6_3.6.i686 conflicts with file from package libc6-6:2.15-1.x86_64
file /lib/libpthread.so.0 from install of glibc-2.12-1.80.el6_3.6.i686 conflicts with file from package libc6-6:2.15-1.x86_64
rpm -qa
以下是glibc 和 libc6 的 grepping输出:
# rpm -qa | grep glibc
glibc-common-2.12-1.80.el6_3.6.x86_64
glibc-2.12-1.80.el6_3.6.x86_64
# rpm -qa | grep libc6
libc6-2.15-1.x86_64
尽管我尽了最大努力,谷歌仍未提供任何非常有用的信息。
为什么这两个包会发生冲突?我该如何让它们很好地协同工作?
编辑:
以下是输出yum repolist
:
# yum repolist
Loaded plugins: product-id, rhnplugin, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
repo id repo name status
rhel-x86_64-server-6 Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64) 8,824
repolist: 8,824
答案1
Red Hat Enterprise Linux 中没有libc6
软件包。相同文件的软件包名称为glibc
。似乎有人在您的服务器上安装了来自不同 Linux 发行版的软件包,并覆盖了他们在尝试这样做时会收到的错误(与您在此处看到的错误几乎相同)。
这当然会使您的 RPM 数据库处于与实际安装的软件不一致的状态,并可能导致兼容性和依赖性问题,例如您今天遇到的问题。例如,不再可能从支持的存储库更新软件包,并且很难确定系统上运行的确切代码。
我最好的猜测是,某人(他真的不知道正确的方法)试图将 glibc 升级到 Red Hat 提供的版本之外,最有可能是为了利用 EL6 附带的 glibc 版本中不存在的新功能。
如果您确实需要此 glibc 的最新版本,正确的方法是使用 Red Hat 的源 RPM,调整 spec 文件和任何补丁来构建新版本的 glibc,并使用新版本的新二进制 RPM。然后,您负责自己维护它,可能会失去供应商支持等。因此,只有当业务需求绝对需要时,您才应该考虑这一点。(既然您无论如何都会失去支持,您不妨切换到 CentOS...)