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

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のパッケージ操作を以下にまとめました。ぜひ参考にしてください。
- 1. パッケージ情報の更新 - apt update
- 2. パッケージの更新 - apt upgrade
- 3. パッケージの検索 - apt search
- 4. パッケージのインストール - apt install
- 5. パッケージの削除 - apt remove
- 6. パッケージの自動削除 - apt autoremove
- 7. パッケージの完全削除 - apt purge
- 8. パッケージキャッシュの削除 - apt clean
- 9. ローカルパッケージのインストール - apt install
- 10. インストール済みパッケージの一覧 - apt list --installed
- 11. 全パッケージ一覧 - apt list
- 12. インストール済みパッケージ内のファイル一覧 - dpkg -L
- 13. パッケージ情報の表示 - apt show
- 14. パッケージの依存関係を表示 - apt depends
- 15. パッケージが依存されているパッケージを表示 - apt rdepends
- 16. ファイルを含むパッケージの検索 - dlocate
- 17. パッケージの更新履歴を表示 - apt changelog
- 18. 更新履歴
パッケージ情報の更新 - 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に同じコマンドを入れたいけれどもパッケージ名が分からない時や、削除したいけれどもパッケージ名が分からない時に使います。
パッケージの更新履歴を表示 - apt changelog
apt changelog パッケージ名
# 「thunerbird」パッケージの更新履歴を表示する例
apt changelog thunderbird
指定したパッケージの更新履歴が表示されます。自動でページャー(デフォルトはless)にパイプされます。
更新履歴
2018-10-16 apt changelogを追加
2018-07-19 Ubuntu 18.04 LTSで動作を確認、debファイルをインストールする例を追加
ディスカッション
コメント一覧
まだ、コメントがありません