バイナリインストールファイルは依存関係をどのように処理しますか?

バイナリインストールファイルは依存関係をどのように処理しますか?

Ubuntu リポジトリでは、アプリケーションまたはライブラリが他のものに依存している場合、apt-get 経由でインストールすると、まず依存関係が自動的にダウンロードされてインストールされます。この方法では、次のようなバイナリ インストール ファイルからインストールされますか.deb?

ソース コードをビルドしてアプリケーションまたはライブラリをインストールすると、./configure不足している依存関係が通知され、最初に手動でインストールされます。

Ubuntu ppa などの Web サイトからダウンロードしたファイルを実行してアプリケーションをインストールするときに.deb、依存関係を処理する必要があることを覚えていません。.debファイルの内容に依存関係が含まれているのでしょうか、それとも依存関係が自動的にダウンロードされてインストールされるのでしょうか?

答え1

リポジトリから を介してパッケージのリストを取得するとapt-get update、 と の両方で/var/lib/apt/var/lib/dpkgすべてのパッケージの情報が次の形式で表示されます。

Package: apt
Priority: important
Section: admin
Installed-Size: 3462
Maintainer: APT Development Team <[email protected]>
Architecture: i386
Version: 1.3.1
Replaces: apt-utils (<< 1.3~exp2~)
Depends: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, init-system-helpers (>= 1.18~), libapt-pkg5.0 (>= 1.3~rc2), libc6 (>= 2.15), libgcc1 (>= 1:4.2), libstdc++6 (>= 5.2)
Recommends: gnupg | gnupg2 | gnupg1
Suggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), powermgmt-base, python-apt
Breaks: apt-utils (<< 1.3~exp2~)
Filename: pool/main/a/apt/apt_1.3.1_i386.deb
Size: 1208426
MD5sum: 9d35afa0f8220cabf0c837f8073569c2
Description: commandline package manager
Description-md5: 9fb97a88cb7383934ef963352b53b4a7
Tag: admin::package-management, devel::lang:ruby, hardware::storage,
 hardware::storage:cd, implemented-in::c++, implemented-in::perl,
 implemented-in::ruby, interface::commandline, network::client,
 protocol::ftp, protocol::http, protocol::ipv6, role::program,
 scope::application, scope::utility, sound::player, suite::debian,
 use::downloading, use::organizing, use::searching, works-with::audio,
 works-with::software:package, works-with::text
SHA256: 9111e4e9ffe3f3dd3c62c4e67485d3495c15bf5d24f4f1c532db4430b389eb19

debian/controlこの情報は、各パッケージのファイルにも存在します.deb。ご覧のとおり、Depends: ...すべての依存関係をリストする行が含まれています。これらの依存関係から、apt-getインストールする必要があるすべてのパッケージが再帰的に計算されます。

パッケージが作成されると、この情報はパッケージ管理者によって追加されます (ただし、これを支援するツールがいくつかあります)。これは、自分でコンパイルするときにパッケージを手動で追加する方法と同様です。

答え2

.deb最初にファイルをパッケージ化した人は、手動インストールで説明した手順と同様の手順に従いました。その際 (作業が正しく行われていれば)、ソース パッケージのdebian/controlファイルに必要な依存関係に関する情報も追加しました。

apt-get他のdpkgフロントエンドは、パッケージと、これらのパッケージに関するメタ情報を含む関連パッケージ データベースのみで動作します。場合によっては、チェーン全体が正しく動作し、依存関係の自動インストールなどのメリットが得られるように、ローカルで作成されたソフトウェアのパッケージ.debを作成したいことがあります。.deb

答え3

dpkg -i依存関係が欠落している (満たされていない) パッケージを ( を使用して)インストールしようとすると、欠落しているパッケージを示すエラー メッセージが表示されます。その後、これらの欠落しているパッケージをまたは で*.deb削除できます。apt-get installaptitude install

関連情報