ぱそくま ろご
Linux > パッケージ管理 > aptを使ってパッケージを管理する

aptを使ってパッケージを管理する

必要なパッケージを探す(apt search)

インストールする前に、パッケージ名がわからないとインストールできません。 そこでaptの「search」サブコマンドを使って、キーワードを元に検索します。 例えば「lftp」に関するパッケージを探す場合は以下の通りとなります。

[paso ~]apt search lftp
apt-zip - Update a non-networked computer using apt and removable medai
curlftpfs - filesystem to access FTP hosts based on FUSE and cURL
lftp - Sophisticated command-line FTP/HTTP client promgrams

必要なパッケージの詳細を表示(apt show)

パッケージの詳細を見るにはaptのshowサブコマンドを使います。

[paso ~]apt show lftp
Package: lftp
Version: 4.3....
.
.
.

ちなみに、searchやshowサブコマンドは/var/cache/apt/のキャッシュファイルを元に情報を表示しています。 (キャッシュファイルは/var/lib/apt/lists/のリポジトリファイル(ファイルの置き場所を管理しているファイル)から生成されます。) 「apt-get clean」をすると、/var/cache/apt/のファイルは削除されますが、 この状態でsearchやshowサブコマンドを実行すると、 先にはgencachesサブコマンドを呼んで、キャッシュファイルを生成してくれます。



パッケージをインストールする(apt install)

パッケージをインストールする場合はaptの「install」サブコマンドを使います。インストールはリポジトリファイルを元に行いますので、リポジトリファイルが古いとインストールできません。失敗例は以下の通りです。

apt install失敗例

[paso ~]sudo apt install lftp
Reading package lists... Done
Building dependency tree
.
.
.
  404  Not Found [IP: 203.178.137.175 80]
Failed to fetch http://ftp.jp.debina.org/debian/pool/main/l....
.
E: Unabel to fetch some archives, maybe run apt update or try with 
--fix-missing?

上記の失敗の原因はインストールしたいlftpのファイルがサーバーにないためです。 これは、実際にlftpがないわけではなく、サーバーにあるlftpのバージョンとリポジトリファイルに記載されているバージョンが違って(古い)いるために起こります。 このようなメッセージが出たら、「maybe run apt update or..」と書いてある通り、 先にaptのupdateサブコマンドを使って、リポジトリファイルを更新します。

[paso ~]sudo apt update
Get:1:...
.
.
Reading package lists... Done
[root ~]apt install lftp  <- update後、行う。
Reading package lists... Done
Building dependency tree
.
.
.
Setting up lftp (4.3.xxx)...

インストールしたパッケージの確認(apt list --installed)

aptの「list」サブコマンドは、パッケージに関するリストを表示します。なお、「--installed」オプションを使うとインストール済みのパッケージを表示してくれます。

パッケージをアップデートする(apt upgrade)

パッケージをアップデートするにはaptの「upgrade」サブコマンドを使います。 ただし、upgradeサブコマンドは

  • 既にインストールされているパッケージを削除する必要がある。
  • アップグレードに際し、別のパッケージをインストールする必要がある。

など、現在の構成が変更されるパッケージはアップデートされません。 全て最新の構成にしたい場合は、aptの「full-upgrade」(apt-getの「dist-upgrade」に相当)サブコマンドを実行します。 なお、upgradeもdist-upgradeもアップデート対象のパッケージを個別に指定できません。個別のアップデートは、installサブコマンドで行います。

パッケージをアンインストールする(apt remove)

不要になったパッケージはaptの「remove」サブコマンドで削除できます。

aptでパッケージをアンインストール

[paso ~]sudo apt remove lftp
Reading package lists... Done
Building dependency tree
.
Do you want to continue [Y/n]?  <- 「y」を入力すると削除が実行される。
.

注意!!「remove」サブコマンドでは設定ファイルは削除されません。設定ファイルごと削除したい場合は「purge」サブコマンドで削除してください。

不要なパッケージをアンインストールする(apt autoremove)

apt removeでパッケージは削除されますが、他のパッケージで使用される可能性があるファイルは削除されません。 よって、removeを繰り返すと誰からも参照されず、単独で実行されないファイルがひっそりと残ってしまいます。 このようなファイルを軒並み削除してくれるのが「apt autoremove」です。

apt autoremoveで不要パッケージを一掃

[paso ~]sudo apt autoremove
Reading package lists... Done
Building dependency tree
.
ここに依存関係のない不要なパッケージの一覧が表示される。
.
Do you want to continue [Y/n]?  <- 「y」を入力すると削除が実行される。
.

おまけ(apt moo)

ソース(apt-get.cc)の3537行目をみると{"moo",&DoMoo}というのがあり、mooサブコマンドがあることがわかります。 mooサブコマンドは完全におふざけです。お手すきの時にでも、お試しください。