試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

x86_64版Mandriva Linuxにおけるx86_32版ライブラリの管理について

GentooからMandrivaへの乗り換えとebuildの在庫処分」でも乗り換えた理由の1つに書いているが、x86_64版Mandriva Linuxでは、Debian/UbuntuGentooと比べてx86_32版ライブラリの管理が楽になっている。

RPMパッケージを使用した他のディストリにも言えるかもしれないが、Mandriva Linuxx86_64版のディレクトリ構成(レイアウト)は、x86_32版のものを拡張した形となっている。
具体的には

  • /lib//usr/lib//usr/local/lib/といった(後ろに数字の付かない)ディレクトリは基本的にx86_32版のライブラリが入って*1x86_32版OSの配置と同じとなり、一方、Debian/UbuntuGentooでは(2008年10月現在)「lib64」へのリンクとなっている。
  • /lib64//usr/lib64//usr/local/lib64/などはx86_64向けのライブラリが入る(Debian/UbuntuGentooも同様)。
  • /lib32//usr/lib32//usr/local/lib32/といったディレクトリ(x86_32版ライブラリが入る)は、Debian/UbuntuGentooには存在するが、Mandrivaには存在しない

となっている。これにより、x86_32向けのパッケージとx86_64向けのパッケージの両方に対応できる。
RPMのパッケージデータベース上でも衝突は起こらないため、x86_64版のMandriva Linuxでは、パッケージマネージャから簡単に、パッケージ単位でx86_32版ライブラリを管理(追加/削除/更新)することができる。
一方、Debian/UbuntuGentooでは、一部のx86_32版ライブラリを一枚岩的に固めたまとまり*2でインストールするため、その中に含まれているライブラリ以外のものが必要になったときに非常に面倒な思いをすることになる。
(2008/11/3)Mandriva Linuxにおけるx86_32版のパッケージは、パッケージマネージャRpmdrake「Arch.」の欄が「i586」になっているものとなる。

*1:例外もあり、例えば、カーネルモジュールは/lib/modules/[バージョン]/へ配置されるが、これはx86_64向けの機械語ファイルとなっている

*2:「ia32-libs」や「emul-linux-x86-*」といったパッケージ