CUBE SUGAR CONTAINER

技術系のこと書きます。

Ubuntu の APT で特定パッケージの依存関係を調べる

今回は Debian 系のパッケージ管理で使われる APT (Advanced Packaging Tool) で特定パッケージの依存関係を調べる方法について。 結論から先に述べると apt-cache depends サブコマンドと apt-cache rdepends サブコマンドを使って調べられる。

使った環境は次のとおり。 最近の Ubuntu であれば特にディストリビューションのバージョンに依存する話ではないはず。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04 LTS
Release:    22.04
Codename:   jammy
$ uname -srm
Linux 5.15.0-41-generic aarch64
$ apt --version
apt 2.4.5 (arm64)

もくじ

依存しているパッケージを調べる

特定のパッケージが依存しているパッケージを調べるには apt-cache depends コマンドが使える。 <pkg-name> にはパッケージ名が入る。

$ apt-cache depends <pkg-name>

例えば python3 パッケージで試してみよう。

$ apt-cache depends python3
python3
  PreDepends: python3-minimal
  Depends: python3.10
  Depends: libpython3-stdlib
  Suggests: python3-doc
  Suggests: python3-tk
  Suggests: python3-venv
  Replaces: python3-minimal

上記において、実際に依存しているパッケージが PreDependsDepends として表示される。 Suggests は推奨なので無くても動作はする。

依存されているパッケージを調べる

反対に、そのパッケージがどのパッケージから依存されているか知りたいときは apt-cache rdepends サブコマンドを使う。

$ apt-cache rdepends <pkg-name>

今度も python3 パッケージで試してみよう。 ただし、めちゃくちゃ数が多いので head(1) を使って先頭だけ表示する。

$ apt-cache rdepends python3 | head
python3
Reverse Depends:
  python3-drslib
  cockpit-ws
  cockpit-storaged
  virtualbox
  virtualbox
  zfs-test
  xdg-desktop-portal-tests
  systemd-tests

なお、同じパッケージ名が複数出るときは、候補となるパッケージのバージョンごとに出てるっぽい

依存(して|されて)いるパッケージを一度に調べる

ちなみに apt-cache showpkg サブコマンドを使えば依存関係を一度に見ることもできる。 ただし、依存関係以外の情報も色々と載っているので、依存関係だけ知りたいときは少し見にくいかも。

$ apt-cache showpkg <pkg-name>

python3 パッケージを試すなら次のようにする。

$ apt-cache showpkg python3

上記を実行すると依存しているパッケージが Dependencies として、依存されているパッケージが Reverse Depends として確認できる。

いじょう。