APT(Debian系ディストリのパッケージ管理)#
Note
この記事ではDebian系ディストリビューションにおけるAPT及びaptコマンドを紹介します。 BusyBoxで利用できるaptコマンドは対象外です。
aptはAdvanced Packaging Toolの略であり、 Debian系ディストリビューションにおいてパッケージの管理を行うためのコマンドである。
aptコマンド、apt-getコマンド等で操作できる。
当初はapt-getコマンドのみが提供されており、 Debian buster(Debian 10)及びUbuntu Focal (20.04)からaptコマンドが導入された。
aptコマンドはapt-getコマンドの後発であるため、 進捗バーが実装されていたりと利便性が高いが、 人間向けに設定されており、これからの更新がある可能性もあるため1、 スクリプトでの利用ではapt-getコマンドの方を推奨されている。
aptコマンドの基本的な使い方#
このセクションでは一部のaptコマンドの利用方法について解説する。 すべての機能については、man apt(8)を。 apt-getコマンドについては、man apt-get(8)を参照すること。
Note
このセクションでは、rootユーザでの操作をsudoコマンドを用いて行うものとします。 既にrootユーザでログインしている場合は、sudoコマンドは不要です。
Note
このセクションではUbuntu 22.04を利用した際の挙動を解説します。 Debianでは一部PATHが通っていない場合があります。
パッケージ情報の更新#
パッケージ情報の更新を行う。
aptでは/etc/apt/sources.listに記述されたリポジトリからパッケージ情報を取得する。
このパッケージ情報が古い場合、パッケージのインストールができない等の問題が発生する。
sudo apt update
パッケージのインストール#
パッケージのインストールはパッケージ名を指定して行う。
事前にパッケージ情報の更新を行っておく事が推奨される。
sudo apt install <package-name>
もし特定のバージョンのパッケージをインストールしたい場合は、 =を使ってバージョンを指定することができる。
sudo apt install <package-name>=<version>
パッケージの削除#
パッケージを削除したい場合、removeサブコマンドを利用する。
sudo apt remove <package-name>
パッケージの設定ファイルごと削除したい場合、purgeサブコマンドを利用する。
sudo apt purge <package-name>
パッケージのアップデート#
パッケージを安全に更新する場合、 upgradeサブコマンドを利用する。
事前にパッケージ情報の更新を実施しない場合、 最新のパッケージ情報が取得されないため、 更新をaptが検出できない。
sudo apt upgrade -u
-uオプションを指定することで、 更新が必要なパッケージの一覧を表示することができる。
パッケージの検索#
Regexを用いてパッケージを検索する。
apt search <package-name>
パッケージのリスト表示#
すべてのインストールできるパッケージの一覧を表示する。
apt list
更新可能なパッケージのみを表示することもできる。
apt list --upgradable
もし現在インストールされているパッケージの一覧を表示したい場合、 --installedオプションを指定することで表示することができる。
apt list --installed
パッケージの自動削除#
他のパッケージのインストールに合わせて依存関係としてインストールされたが、 そのパッケージが削除されたなどの理由で不要になったパッケージを削除する。
sudo apt autoremove
もし、パッケージの削除段階でそのパッケージの設定ファイルも削除したい場合、 autopurgeサブコマンドを利用することで設定ファイルも削除することができる。
sudo apt autopurge
Pimの内部ルール#
Pimでは、aptコマンドを利用してパッケージの管理を行う際に-yオプションの利用を禁止する。
-yオプションは、パッケージのインストールや削除を行う際に、 確認を行わずに実行するためのオプションである。
このオプションを使用することで、異常な依存関係の解決や、削除すべきでないパッケージの削除などが発生する可能性があるため、このオプションを利用した操作は禁止される。
インターネットで紹介されている手法では、-yオプションを利用していることがあるため、注意すること。
また、他のコマンドと同じように-dyなどと他のオプションと共通の-を使い表記されている場合があるので、 -yオプションが含まれていないか確認すること。
また、--yesや、--assume-yesも-yと同義である2。