CentOS 5.4 x64になぜi386のパッケージが入っているのか。

CentOS 5.4 x86_64をインストールし、rpmコマンドでインストールされているパッケージを確認した時に、変に思ったことはないでしょうか。
例えば、openldapを見ると同じものが2つ入っていたりします。
実は、片方はx86_64版で、もう片方はi386版なのです。
前々から不思議に思ってたのですが、64bit版を入れたつもりが、なぜか32bit版のパッケージも入っているなと、常々思っておりました。
最近は私もRPMパッケージを公開していたりするのですが、どうあってもx86_64にi386の一部のパッケージも入れておかないと依存関係で失敗してパッケージがインストールできなくなったりして、悩んでおりました。
決まった法則もあるのか無いのか、この辺ご存じの方がいれば、教えて頂きたいのですが、今まで私が経験したことを、披露したいと思います。
そもそも、普通にCentOS 5のx86_64を使っている分には、i386版のパッケージは全く必要ありません。
そのため、下記のコマンドで、一気にi386版を削除しても、普通にCentOSは動いてくれます。
# yum remove \*.i386 \*.i686
ところが、ある日遊び半分で、wineでも触ろうかと思い、Windowsアプリを立ち上げたところ、wineが全く動かなくなっていました。
すぐにはわからなかったのですが、最近ようやくi386版のパッケージを全部削除したことが原因だということがなんとなくわかってきました。
恐らくwineは、元々32bit版のパッケージでコンパイルされて動作していたんですね。
どおりで、64bit版のwineのRPMパッケージが存在しないわけです。
そもそも、wineは32bitのWindowsを再現しているものなのだから、当然と言えば当然なのかもしれません。
そのため、改めてwineに必要なパッケージをインストールしてあげることにしました。
# yum groupinstall 'X ソフトウェア開発' '開発ツール'
ところが、これではインストールできませんでした。
ふと、vmware server 2.0.2では新しいglibcが入っていると動作しないということで、yum.confの中にglibcがアップグレードされないように設定していたことを思い出しました。
# vi /etc/yum.conf
exclude=glibc* nscd*
↓
#exclude=glibc* nscd*
これで再度、yumコマンドで必要なパッケージをインストールしたところ、うまくインストールされwineが復活しました。
そして、あらかじめvmware server 2.0.2をインストールした時に取っておいた旧版のglibcを、rpmコマンド一発でダウングレードしました。
・glibc-2.5-34.i686.rpm
・glibc-2.5-34.x86_64.rpm
・glibc-common-2.5-34.x86_64.rpm
・glibc-devel-2.5-34.x86_64.rpm
・glibc-headers-2.5-34.x86_64.rpm
・nscd-2.5-34.x86_64.rpm
※ glibc-develのi386は特に必要ありません。
もしも、削除して持っていない場合は、CentOS 5.3あたりからダウンロードして、下記のコマンドでダウングレードです。
# rpm -Uvh --oldpackage glibc* nscd*
最後に/etc/yum.confを元に戻して作業は終了です。
これで少しはすっきりしました。
以下、参考リンクです。
Wikipedia(Linux)
Wikipedia(CentOS)
Wikipedia(RPM Package Manager)
Wikipedia(Yellowdog Updater Modified)
↑役に立ったら拍手!












