Debian/UbuntuのMultiarch

  • 既存のライブラリのディレクトリ(/lib/,/usr/lib/など)の下にアーキテクチャ名のディレクトリを設けて/usr/lib/x86_64-linux-gnu//usr/lib/i386-linux-gnu/のようなディレクトリにライブラリのファイル群(pkgconfigで用いる.pcファイルなども含む)を配置する形で複数のアーキテクチャのライブラリを共存可能にする仕組み

  • パッケージマネージャからはアーキテクチャごとにパッケージを管理でき、x86_64版のディストリでは:i386の付いた名前のパッケージでx86_32向けのパッケージを管理でき、Synapticではセクションや状態,配布元といった分類の1つとしてアーキテクチャによる絞り込みがarch:all(アーキテクチャ非依存),arch:amd64(x86_64用),arch:i386(x86_32用)のいずれかで行える

  • 動的リンクの際のディレクトリ探索は/etc/ld.so.conf.d/以下のアーキテクチャ名のファイルによる

  • Multiarchには各ライブラリパッケージ側の対応が必須で、Ubuntu 11.10時点では未対応のパッケージが多く、一部のパッケージを除いて実用レベルとは言えない(パッケージをインストールしようとすると他のパッケージが削除指定される場合がある)

  • 色々なパッケージのx86_32版を集めたia32-libsパッケージ(x86_64版ディストリ向け)は、Multiarch対応が進んできたことにより、Ubuntu 12.04時点では個別のi386(x86_32)アーキテクチャ向けの個別のライブラリに依存する(だけの空の)パッケージとなっている

  • その後も対応は進み、Ubuntu 13.04時点では大部分のパッケージがx86_64版とx86_32版それぞれ個別にインストールできるようになっており、GUIパッケージマネージャのSynapticでもアーキテクチャによる絞り込みやその中からの操作(例:x86_64版ディストリでx86_32版の特定のパッケージのインストール/アンインストール)ができるようになっている

関連セクション