「apt-get」はもう古い?新しい「apt」コマンドを使ったUbuntuのパッケージ管理

2017年7月15日

Linuxの魅力の1つは、アプリのインストールが楽なことですよね。デスクトップならGUIで選べば勝手にダウンロード、インストールしてくれますし、コマンド1行で複数のアプリをまとめて入れてしまうこともできます。
そして、RedHat系ならパッケージ管理は「yum」コマンド、そしてUbuntuなどDebian系は「apt-cache」と「apt-get」コマンド…そう思っている人、まだまだ多いんじゃないでしょうか?
確かに、「apt-cache search」とか「apt-get install」って書いてある記事が多いですよね。
でも実は、Ubuntu 14.04から「apt-get」じゃなくて「apt」コマンドが推奨されています!これからは「apt」が主流になっていくはずです。今のうちに切り替えて、指にコマンドを覚えさせてしまいましょう。
「apt」を中心に、Ubuntuのパッケージ操作を以下にまとめました。ぜひ参考にしてください。

パッケージ情報の更新 - apt update

sudo apt update

これは、パッケージのリポジトリ(貯蔵庫)から、パッケージの名前やバージョン、依存関係を取得するコマンドです。このコマンドで/var/lib/apt以下にあるパッケージ情報が更新されます。その情報を元に、パッケージのダウンロードが行われるわけですね。Ubuntuを普通にインストールすると定期的に自動で実行されるようになっていますが、パッケージの更新やインストール前に手動で実行しておくと良いでしょう。実行すると、アップデートできるパッケージの個数を教えてくれます。

パッケージの更新 - apt upgrade

sudo apt upgrade

# 以下は必要に応じてパッケージの削除を伴う更新を行う場合に実行する
sudo apt full-upgrade

アップグレード可能なパッケージを更新します。デスクトップだと更新ダイアログで実行できますが、コマンドも覚えておくと便利です。「full-upgrade」は、「保留」とされるパッケージがある場合に実行します。すると、パッケージを削除しないと更新できないパッケージも処理してくれます。

パッケージの検索 - apt search

apt search 検索語句

# 「game」で検索してページャでスクロールする例
apt search game | less

パッケージを検索します。検索語句によっては大量に出力されるので、パイプでlessに送ったほうがいいです。旧来の1行1パッケージの形式のほうが良ければ、以下のように「apt-cache」を使いましょう。

apt-cahce search 検索語句

# 「ruby」で検索して「ruby」で始まるものだけを抽出、並べ替えてページャに渡す例
apt-cache search ruby | grep ^ruby | sort | less

パッケージのインストール - apt install

sudo apt install パッケージ名

# 「openssh-server」をインストールする例
sudo apt install openssh-server

# 複数のパッケージを一度にインストールする例
sudo apt install htop iotop

# パターン「ruby-*」に合ったパッケージをすべてインストールする例
sudo apt install 'ruby-*'

# タスク「lamp-server」に含まれるパッケージをすべてインストールする例
sudo apt install lamp-server^

# カレントディレクトリにダウンロードした「mcomix_1.2.1-1.1~ppa1_all.deb」をインストールする例
# (パッケージ名ではなくパッケージファイル名を指定する場合は「ディレクトリパス」を指定する必要がある)
sudo apt install ./mcomix_1.2.1-1.1~ppa1_all.deb

コマンドを使えば、一度にいくつものパッケージをインストールできるのが超便利ですよね。コマンドを実行しておけば、基本的に放置しておくだけで終わりますし。でも、設定ファイルを上書きするか聞かれたり、パッケージによってはインストール時に入力を求められることもあるので、その点は注意してください。

パッケージの削除 - apt remove

sudo apt remove パッケージ名

# 「extremetuxracer」 を削除する例
sudo apt remove extremetuxracer

# 複数のパッケージを一度に削除する例
sudo apt remove htop iotop

# パターン「ruby-*」に合ったパッケージをすべて削除する例
sudo apt remove 'ruby-*'

# タスク「lamp-server」に含まれるパッケージをすべて削除する例
sudo apt remove lamp-server^

パッケージの自動削除 - apt autoremove

sudo apt autoremove

これは、他のパッケージが削除されたことで「必要なくなった」パッケージを削除するコマンドです。たとえば、「extremetuxracer」(ペンギンが滑る3Dゲーム)をインストールすると、そのデータが入った別のパッケージ「extremetuxracer-data」もインストールされます。でも、「extremetuxracer」を削除しても「extremetuxracer-data」はシステムに残ったままになります。そうして残ってしまった使われないパッケージを削除して、システムをキレイにするのがこのコマンドです。

パッケージの完全削除 - apt purge

sudo apt purge パッケージ名

パッケージを削除しても、/etcなどにあるユーザーが修正した設定ファイルが残ることがあります。再インストールした時、その設定ファイルを再利用するためです。設定ファイルも完全に消したい時、このコマンドを実行してください。

パッケージキャッシュの削除 - apt clean

sudo apt clean

自動でダウンロードされたdebパッケージは、/var/cache/apt以下にキャッシュされます。これを削除して、ディスク容量を空けるコマンドです。

ローカルパッケージのインストール - apt install

sudo apt install debパッケージへのパス

# カレントディレクトリにある「hello_0.0-1_amd64.deb」をインストールする
sudo apt install ./hello_0.0-1_amd64.deb

以前は「sudo dpkg -i」でインストールするという解説が多かったですが、aptを使えば依存するパッケージもあわせて自動でインストールしてくれます。ファイル名だけじゃなくてディレクトリ名から入力しないといけません。

インストール済みパッケージの一覧 - apt list --installed

apt list --installed

# 以下は旧来から使えるdpkgコマンドを用いた例
dpkg -l

全パッケージ一覧 - apt list

apt list

インストール済みパッケージ内のファイル一覧 - dpkg -L

dpkg -L パッケージ名

# aptパッケージに含まれるファイルの一覧を出力する例
dpkg -L apt

パッケージ情報の表示 - apt show

apt show パッケージ名

# 「apache2」パッケージの情報を表示する例
apt show apache2

パッケージの依存関係を表示 - apt depends

apt depends パッケージ名

# 「mcomix」パッケージの依存関係を表示する例
apt depends mcomix

これは、指定したパッケージが依存(Depends)、提案(Suggests)、推奨(Recommends)、競合(Conflicts)しているパッケージを出力します。

パッケージが依存されているパッケージを表示 - apt rdepends

apt rdepends パッケージ名

# 「ffmpeg」パッケージへの依存関係を表示する例
apt rdepends ffmpeg

こちらはdependsと逆で、指定したパッケージが依存(Depends)、提案(Suggests)、推奨(Recommends)、競合(Conflicts)されているパッケージを出力します。

ファイルを含むパッケージの検索 - dlocate

dlocate ファイル名

# 「/usr/bin/xclock」を含むパッケージを検索する例
dlocate /usr/bin/xclock

インストール済みのファイルがどのパッケージに入っていたかを調べるコマンドです。dlocateはデフォルトではインストールされないので、「sudo apt install dlocate」で追加する必要があります。別PCに同じコマンドを入れたいけれどもパッケージ名が分からない時や、削除したいけれどもパッケージ名が分からない時に使います。

更新履歴

2018-07-19 Ubuntu 18.04 LTSで動作を確認、debファイルをインストールする例を追加