glibc.i686 与 libc6 冲突?

glibc.i686 与 libc6 冲突?

我有一台 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...)

相关内容