Ubuntuでパッケージの依存関係を確認・一覧表示する方法
WindowsやmacOS、Androidとは異なり、UbuntuをはじめとするLinuxのソフトウェアは単一のパッケージとして配布されていません。アプリケーションをインストールすると、システムのパッケージマネージャーがメインのアプリパッケージとその依存パッケージを含む複数のパッケージをダウンロードします。ただし、これはAPTなどのパッケージマネージャーを使った従来のインストール方法に当てはまる話です。
インストール時にどのような追加パッケージ(依存関係)がダウンロードされるのかを把握しておくと、初心者から上級者まで大きなメリットがあります。システムにインストールされるパッケージを完全にコントロールできるようになるからです。
それでは、Ubuntuでパッケージの依存関係を確認する具体的な方法を見ていきましょう。
パッケージの依存関係とは?
依存関係とは、Linux上でアプリケーションが正しく動作するために必要となるサポート用パッケージのことです。例えば、UbuntuでVLCメディアプレーヤーをインストールする場合、APTは「vlc」パッケージ本体に加えて、libc6やgccといった追加パッケージもインストールします。さらに、依存パッケージ自体が別のパッケージに依存していることもあり、階層構造を形成しています。
Linuxのパッケージは互いに依存し合っているため、ほぼすべてのソフトウェアには追加パッケージが必要となり、それらをシステムにインストールしなければなりません。
APTのようなパッケージマネージャーは依存関係の管理とインストールを自動化してくれますが、ソースから手動でパッケージをビルドする際にはエラーが発生することがあります。そのような場合は、apt installコマンドで必要な依存パッケージをインストールするだけで解決できます。
Linuxでパッケージの依存関係を確認する方法
幸いなことに、Ubuntuにはパッケージの依存関係リストを取得する方法がいくつかあります。UbuntuやDebian系ディストリビューションのデフォルトパッケージマネージャーであるAPTには、依存関係に関する情報を取得するためのコマンドが複数用意されています。
APTパッケージマネージャーを使う
UbuntuではAPTを使って、パッケージに関連付けられた依存関係のリストを取得できます。コマンドの基本構文は次のとおりです。
sudo apt depends packagename
例えば、rhythmboxパッケージの依存関係を確認するには、次のように実行します。
sudo apt depends rhythmbox
依存関係のリストに加えて、rhythmboxと一緒にインストールできる推奨パッケージや提案パッケージも出力に含まれます。
また、apt-cacheコマンドでも同じ出力を得られます。
sudo apt-cache depends rhythmbox
特定のパッケージに関するより詳しい情報を取得したい場合は、dependsの代わりにshowを使用します。
sudo apt show rhythmbox
sudo apt-cache show rhythmbox
出力例:
dpkgで依存関係を一覧表示する
DEBパッケージをダウンロード済みで、そのパッケージと一緒にどの依存関係がインストールされるのかを知りたい場合は、dpkgコマンドに-I(大文字のアイです。小文字のエルではないので注意)または--infoフラグを付けて実行します。
sudo dpkg -I /path/to/package.deb
sudo dpkg --info /path/to/package.deb
ここで/path/to/package.debは、DEBファイルへの絶対パスまたは相対パスです。
出力には、パッケージのサイズやソースなどの有用な情報とともに、依存関係のリストが表示されます。
すでにインストール済みのパッケージの依存関係リストを取得するには、dpkgに-sフラグを付けます。例:
sudo dpkg -s firefox
出力例:
apt-rdependsを使う
より詳細な出力を得たい場合は、apt-rdependsユーティリティを利用しましょう。多くのLinuxディストリビューションにはプリインストールされていないため、UbuntuではAPTを使って手動でインストールする必要があります。
sudo apt install apt-rdepends
以下のコマンド形式で、パッケージの依存ツリーを取得できます。
apt-rdepends packagename
例えば:
apt-rdepends vlc
出力例:
apt-rdependsは依存関係の完全な階層ツリーを表示するため、出力は一般的に長くなります。つまり、依存パッケージがさらに持つ依存関係まで一覧できるのです。
逆に、特定のパッケージに依存しているパッケージのリストを取得することも可能です。例えば、libcを依存関係として必要とするパッケージを確認するには:
apt-rdepends -r libc
出力例:
reverse-dependsユーティリティを使う
apt-rdependsの逆依存機能(-rフラグ)は十分に活用できますが、パッケージの逆依存関係を抽出できるユーティリティは他にも存在します。reverse-dependsコマンドはubuntu-dev-toolsパッケージの一部で、次のコマンドでインストールできます。
sudo apt install ubuntu-dev-tools
コマンドの基本構文は次のとおりです。
reverse-depends options packagename
optionsにはコマンドで使用できるフラグを、packagenameには逆依存関係を調べたいパッケージの名前を指定します。
上記のコマンドにさまざまなフラグを追加して、出力内容を変更することもできます。特に便利なオプションは以下のとおりです。
- -R:直接の依存関係のみを一覧表示(提案・推奨パッケージは除外)
- -s:提案パッケージを出力に含める
- -l:スクリプトでの利用に適した、より整形された形式で出力する
使い方がわからずコマンドラインのヘルプが必要な場合は、--helpまたは-hフラグを使用してください。
reverse-depends -h
reverse-depends --help
シミュレーションによるインストール/削除で依存関係リストを取得する
現在システムにインストールされていない依存パッケージの手短なリストが欲しい場合は、特定のパッケージのインストール(またはアンインストール)をシミュレーションで実行するのがおすすめです。
例えば、PHPパッケージに必要な依存関係を確認するには、次のコマンドを実行します。
sudo apt install -s php
出力には「以下の追加パッケージがインストールされます」というセクションが含まれ、そこに列挙されているパッケージ名がすべて、システムに見つからなかった依存パッケージです。
すでにUbuntuにインストールされているパッケージの依存関係リストを取得したい場合は、削除のシミュレーションを行い、一緒に削除される追加パッケージを確認できます。
sudo apt remove -s packagename
例:
sudo apt remove -s rhythmbox
出力例:
Linuxパッケージは相互に依存している
このガイドからも分かるように、ほぼすべてのLinuxパッケージは別のパッケージに依存しています。この背後にある基本原則は、「LinuxベースのOSでは各パッケージはひとつの仕事だけを、うまくこなすべきだ」というものです。
あるパッケージがオーディオサービスの管理向けに開発されたものであれば、他のプログラムはそのパッケージを依存関係として指定し、オーディオ関連の要件を満たすために利用します。
さらに、複数のアプリケーションが同じパッケージを必要とする場合でも、システムには一度しかインストールされないため、データの重複が防げてディスク容量の節約にもつながります。なお、APTを使えば、システムに現在インストールされている全パッケージのリストを取得することも可能です。
-
Ubuntu 18.04 LTSをUbuntu 20.04 LTSへアップグレードする完全ガイド
Ubuntu 20.04 LTSは2020年4月23日にリリースされ、数々の機能改善とソフトウェアの強化が盛り込まれています。現在Ubuntu 18.04 LTSを使用している方のために、この記事ではUbuntu 18.04 LTSからUbuntu 20.04 LTSへ安全にアップグレードする手順を詳しく解説します。 アップグレード前に必ずバックアップと動作確認を行う 作業を始める前に、まず重要なデータのバックアップを必ず取っておきましょう。幸い、Ubuntuにはバックアップユーティリティが標準で搭載されているので、これを活用すれば簡単にデータを保護できます。 あるいは、残してお
-
Ubuntu 20.04にフォントをインストールする方法を徹底解説
最新版のUbuntuに標準搭載されているフォントは、多くの人にとって「十分すぎるほど」充実しています。しかし、仕事の都合上さらに多くのフォントが必要な方や、単純にもっと多くの選択肢を持ちたい方もいるでしょう。この記事では、Ubuntu 20.04に新しいフォントをインストールするさまざまな方法を、初心者の方にもわかりやすく解説します。定番:MicrosoftコアフォントのインストールLinuxにフォントを追加するチュートリアルといえば、まず真っ先に登場するのがMicrosoftのコアフォントです。一部のフォントは今なお絶大な人気を誇っており、Windowsユーザーとファイルをやり取りする機会が