Debianメモ(1) パッケージのインストールや削除、キャッシュの掃除ほか by APT
普段、何気なくapt-get install等を使っていますが、ちゃんとマニュアルを読んだことがなかったのでDebian Administrator's Handbookを読んで知識を整理してみました。
- この記事の情報源
- APTという表現
- apt-getとapt
- よく使うコマンド
- まずはパッケージの一覧をアップデート
- パッケージのインストールと削除
- 【地味に大切】キャッシュ用ディレクトリをお掃除する
- インストール済みのパッケージを再インストールする方法
- パッケージのバージョンを指定してインストールする方法
- 複数台のマシンに同じパッケージ群をインストールする方法
この記事の情報源
buster用のDebian Administrator's Handbookを元にして、この記事を書いています。
https://debian-handbook.info/
本記事では、以下「buster用ハンドブック」と記述します。
なお、本記事に登場するbuster用ハンドブックのページ番号は、英語版のbuster用ハンドブックに対応しています。
APTという表現
APTは Advanced Package Tool の略語で、パッケージの管理システム全体を指す言葉です。aptコマンドはその一部です。
本記事では、aptコマンドと区別するために、大文字でAPTと表記しています。
余談ですが、Debian Wikiを見たら、APTに含まれる各種ツールが以下のページに載っていました。
PackageManagementTools - Debian Wiki
apt-getとapt
buster用ハンドブックによると、APTプロジェクトにおける最初のフロントエンドがapt-getで、2番目のフロントエンドがaptです。aptは対話型の利用に向けて改良されている一方、apt-getはパッケージのインストール作業をシェルスクリプト等で行うシーンで好まれるそうです。
なお、buster用ハンドブックはaptを推奨しています。
よく使うコマンド
apt update (パッケージの一覧をアップデート)
apt install (パッケージをインストール)
apt remove (設定ファイルを残してパッケージを削除)
apt-get clean または apt-get autoclean (キャッシュディレクトリを掃除)
まずはパッケージの一覧をアップデート
新たにパッケージをインストールする前に
apt update
を実行し、利用できるパッケージの一覧をアップデートします。
buter用ハンドブックによると、Packages, Sources, Translation-language-codeなどのファイルをリポジトリからダウンロードしているようです。
パッケージのインストールと削除
パッケージをインストールするには
apt install パッケージ名
とします。自動的に、依存関係を満たすように必要なファイル一式をインストールします。
(使用例)
apt install vim
この使用例では vim をインストールしています。
パッケージを削除するには、
apt remove パッケージ名
とします。自動的に、削除するパッケージが依存していたパッケージも削除します。
apt purgeと異なり、設定ファイルは削除されずに残ります。
(使用例)
apt remove vim
設定ファイルも含めてパッケージを削除する場合は
apt purge パッケージ名
とします。apt removeと異なり、設定ファイルも含めて完全にアンインストールされます。
(使用例)
apt purge vim
あるパッケージをインストールするついでに、別のパッケージを削除したい場合は
apt install package1 package2-
とすることで、package1がインストールされ、package2が削除されます。
なお、同じことをするのに、以下のようにすることもできます。
apt remove package1+ package2
この2つの例にあるとおり、パッケージ名の末尾に「+」を付けたものがインストールされ、「-」を付けたものが削除されます。
【地味に大切】キャッシュ用ディレクトリをお掃除する
(buster用ハンドブック 119ページ)
APTはダウンロードしたdebファイルのコピーを /var/cache/apt/archives/ に保存しています。そのため頻繁にアップデートがあった場合、このディレクトリが肥大化します。そこで、定期的にこのディレクトリを掃除する必要があります。
この目的に使われるコマンドとして、apt-get cleanとapt-get autocleanがあります。
apt-get clean
/var/cache/apt/archives/ディレクトリを丸ごと空っぽにします。
apt-get autoclean
もうダウンロードすることができなくなったパッケージ(リポジトリから無くなったパッケージ)だけを/var/cache/apt/archives/から削除します。
インストール済みのパッケージを再インストールする方法
buster用ハンドブックの118ページに、既にインストールされているパッケージを再インストールする方法が書かれています。
たとえば、パッケージのファイルを修正した結果、システムが上手く動かなくなったとします。こんな時、壊れたファイルを修復するためにパッケージを再インストールしたいところです。しかし、パッケージが既にインストールされているため、システムはパッケージのインストールを拒否します。
このような場面で、aptコマンドに --reinstall オプションを使います。
以下の例ではpostfixのパッケージを再インストールしています。
apt --reinstall install postfix
なお、aptitudeを使う場合は次のようになります。
aptitude reinstall postfix
パッケージのバージョンを指定してインストールする方法
(buster用ハンドブックの119ページ)
sources.listファイル内で複数のディストリビューション(stable版、testing版、unstable版など)を参照するように設定されていれば、aptコマンドに対してインストールしたいバージョンを指定することができます。
apt install パッケージ名=バージョン
という形式も使えるものの、通常は以下の形式が好まれるそうです。
apt install パッケージ名/ディストリビューション名
たとえば、unstable版に含まれるspamassassinパッケージをインストールする場合、次のようになります。
apt install spamassassin/unstable
複数台のマシンに同じパッケージ群をインストールする方法
あるマシンにインストールされているのと同じパッケージ構成を他のマシンにインストールする方法が、buster用ハンドブックの117~118ページに書かれています。
最初に、既に各種パッケージのインストールが終わっているマシンで
dpkg --get-selections > pkg-list
を実行して、パッケージの一覧をpkg-listファイルに書き出します。
書き出したファイルをこれからパッケージをインストールしたいマシンに保存して、以下のコマンドを実行します(buster用ハンドブックからそのままコピペしました)。
## Update dpkg’s database of known packages avail='mktemp' apt-cache dumpavail > "$avail" dpkg --merge-avail "$avail" rm -f "$avail" ## Update dpkg’s selections dpkg --set-selections < pkg-list ## Ask apt-get to install the selected packages apt-get dselect-upgrade
参考までに、manに書かれていた各コマンドの意味は次のとおりです。
apt-cache dumpavail
利用可能なパッケージの一覧を標準出力に表示します。
dpkg --merge-avail ファイル名
古い情報を(引数として指定した)パッケージファイルの情報と結合します。
dpkg --set-selections ファイル名
引数として指定したファイルの内容をセットします。
buster用ハンドブックによると、最初の方のコマンド(apt-get dselect-upgrade以外のコマンド)は、dpkgデータベースにある利用可能なパッケージの一覧を記録するものだそうです。
あとは、apt-get dselect-upgradeが必要なことをやってくれますが、aptitudeにはこれに相当するコマンドが無いそうです。