У меня есть 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
grepping для glibc и libc6:
# 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
Несмотря на все мои усилия, Google не произвел ничего особо полезного.
Почему эти два пакета конфликтуют и как заставить их хорошо взаимодействовать друг с другом?
РЕДАКТИРОВАТЬ:
Вот результат 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
Здесь нет libc6
пакет в Red Hat Enterprise Linux. Имя пакета для тех же файлов: glibc
. Похоже, что кто-то установил на ваш сервер пакет из другого дистрибутива Linux и перекрыл ошибки, которые они могли бы получить при попытке сделать это (которые примерно такие же, как те, которые вы видели здесь).
Это, конечно, переводит вашу базу данных RPM в несогласованное состояние по отношению к фактическому установленному программному обеспечению и может вызвать проблемы совместимости и зависимости, подобные тем, с которыми вы столкнулись сегодня. Например, становится невозможным обновлять пакеты из поддерживаемых репозиториев и трудно точно определить, какой код выполняется в системе.
Я предполагаю, что кто-то (кто действительно не знает, как это сделать) попытался обновить glibc за пределами версии, предоставленной Red Hat, скорее всего, чтобы воспользоваться новой функцией, которой нет в версии glibc поставляется с EL6.
Правильный способ, если вам действительно нужна эта последняя версия glibc, - это взять исходный RPM Red Hat, настроить файл спецификации и любые патчи для сборки новой версии glibc и использовать новые двоичные RPM новой версии. В таком случае вы несете ответственность за его обслуживание самостоятельно, можете потерять поддержку со стороны поставщика и т. Д., Поэтому вам следует думать об этом только в том случае, если этого требуют бизнес-требования. (И поскольку вы все равно потеряете поддержку, вы также можете переключиться на CentOS ...)