恥は/dev/nullへ by 初心者

プログラミング素人がのろのろと学んだことをつづっています♪

Debianメモ(1) パッケージのインストールや削除、キャッシュの掃除ほか by APT

普段、何気なくapt-get install等を使っていますが、ちゃんとマニュアルを読んだことがなかったのでDebian Administrator's Handbookを読んで知識を整理してみました。

 

 

この記事の情報源

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 cleanapt-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にはこれに相当するコマンドが無いそうです。