web-dev-qa-db-ja.com

64ビットシステムが32ビットリポジトリを探すのはなぜですか?

ラップトップに64ビットの12.10をインストールしています。 apt-get updateを実行すると、32ビットパッケージのパッケージリスト(およびソースおよび64ビットパッケージリスト)がダウンロードされます。 64ビットシステムで32ビットパッケージリストを検索するのはなぜですか?以下に見つけようとするアイテムの1つを含めました。

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
18
tgm4883

紛らわしいですね。少し説明させてください。

どうして?

  • 32ビットソフトウェアは、64ビット対応ハードウェアを備えた64ビットカーネルで正常に動作します。
  • 一部のソフトウェアは、依然として特定の32ビットライブラリに依存しています。これはニースではありませんが、これを変更する権限がない場合があります。
  • 32ビットソフトウェアは、依存関係を満たすためにシステムで使用できる必要があるため、32ビットリポジトリも使用します。

私は2011年初めから来ました。何が起きましたか?

11.10より前のUbuntuの64ビットバージョンでは、いくつかの一般的な32ビットライブラリのセットが、APT/Dpkgに64ビットとして表される単一のia32-libsパッケージと、リポジトリ内のそのような場所にパッケージされていました。アプリケーションに1つのライブラリが必要な場合、32ビットライブラリの150 MB以上に依存します。1。明らかに、これは素晴らしいデザインではありません。

複数のアーキテクチャ?

新しいアイデアは、いわゆる「Multiarch」機能をAPT/Dpkgとその周辺のツールに導入することでした。これは、Launchpadのいくつかの設計図で提示されました ここにそのうちの1つ 。 Oneiric(11.10)はMultiarchをサポートする最初のリリースになりました。

どのように機能しますか?

システムで実行可能なアーキテクチャをDpkgに伝えることができます。 12.04 64ビットインストールでは、これは次のとおりです。

$ cat /etc/dpkg/dpkg.cfg.d/multiarch 
foreign-architecture i386

i386パッケージの全世界を開き、AMD64がデフォルトのままです:

$ apt-cache show libqt4-core                   | grep -E "^(Filename|Architecture)"
Architecture: AMD64
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_AMD64.deb

$ apt-cache show libqt4-core:i386              | grep -E "^(Filename|Architecture)"
Architecture: i386
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_i386.deb

上記の例は、Multiarchを使用すると、パッケージメンテナーがパッケージを単純にlibqt4-core:i386に依存させることができ、any32ビットライブラリ/パッケージ(したがって、32ビットライブラリ/パッケージに依存するパッケージをインストールするため).

ia32-libsの互換性

ia32-libsパッケージを便利なパッケージとしてインストールして、基本的な32ビットライブラリの共通セットをインストールするために使用した場合、 ia32-libs-multiarchInstall ia32-libs-multiarch 。これは、同じ(または少なくとも非常によく似た)ライブラリセットに依存する単純なメタパッケージですが、Multiarchの力でインストールされます。

さらに関連する測定値

1Lucid(10.04)の場合、 ia32-libs package インストールサイズは155,812.0 kBです。

28
gertvdijk