32ビット互換性のためにglibc.i686モジュールをインストールさせたくない64ビットRedhatEnterprise Linuxサーバー(バージョン6.3)があります。 rootとしてyum install glibc.i686
を試してみると、次のような長いエラー文字列が表示されます。
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
Glibcとlibc6のrpm -qa
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
グーグルは私の最善の努力にもかかわらず、ひどく役立つものを何も生み出していません。
これらの2つのパッケージが競合するのはなぜですか。また、それらを一緒にうまく再生するにはどうすればよいですか。
編集:
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
Red Hat EnterpriseLinuxにはlibc6
パッケージはありません。同じファイルのパッケージ名はglibc
です。誰かが別のLinuxディストリビューションからサーバーにパッケージをインストールし、そうしようとしたときに受け取ったはずのエラーを無効にしたようです(これはここで見たものとほぼ同じです)。
これはもちろん、RPMデータベースを実際にインストールされているソフトウェアと比較して一貫性のない状態にし、今日遭遇したような互換性と依存関係の問題を引き起こす可能性があります。たとえば、サポートされているリポジトリからパッケージを更新することはできなくなり、システムで実行されているコードを正確に特定することが困難になります。
私の最善の推測は、誰か(これを行う正しい方法を本当に知らない)がRed Hatによって提供されるバージョンを超えてglibcをアップグレードしようとしたことです。おそらく、のバージョンには存在しない新機能を利用するでしょう。 glibcはEL6に同梱されています。
この最新バージョンのglibcが本当に必要な場合の正しい方法は、Red HatのソースRPMを取得し、スペックファイルとパッチを微調整して新しいバージョンのglibcをビルドし、新しいバージョンの新しいバイナリRPMを使用することです。その後、あなたはそれを自分で維持する責任があり、ベンダーのサポートを失う可能性があります。したがって、これはビジネス要件が絶対にそれを要求する場合にのみ考えるべきものです。 (とにかくサポートを失うので、CentOSに切り替えることもできます...)