Debian系のパッケージ管理として「apt」が登場してから、時々「apt-getは不要!」という話を聞くことがあります。
結論から言うと、公式では「使い分けよう」が正解です。
公式の方では、次のように解説しています。
ユーザーは インタラクティブ 用途には apt(8) コマンドを使うことが推奨されますし、シェルスクリプト中ではapt-get(8) や apt-cache(8) コマンドを使うことが推奨されます
aptやapt-getそれぞれの特徴を捉えて、正しく使い分けるようにしましょう。
特に参考にしてほしい方
- aptまたはapt-getのみで済ませている方
- aptとapt-getの違いをあまり意識していない方
aptは対話型(インタラクティブ)として、apt-getはCLI用として使う
aptやapt-getの違いについて、公式ドキュメント(翻訳)で比較してみます。
カタカナ用語が多く少々読みにくいですが、なるべく分かりやすくなるよう解説します。
記事の最後に、原文の参考リンクを記載しました。
英語の原文が読める方は、そちらの方が分かりやすいかもしれません。
aptコマンドの特徴と使い方
まず、aptコマンドの特徴について、Debianの公式ドキュメントには次のようにあります。
apt コマンドはパッケージ管理のための上位コマンドラインインターフェースです。基本的に apt-get や apt-cache 等のコマンドのラッパーで、インタラクティブな用途に良いオプションをデフォルトで有効にしてエンドユーザーインターフェース向けとなっています。
- apt は、apt install としてパッケージをインストールするとフレンドリーなプログレスバーを提供します。
- apt は、ダウンロードされたパッケージが上手くインストールされた後、デフォルトでキャッシュされた .deb パッケージを削除 します。
ということですから、ざっくり次のことが言えます。
- aptコマンドはapt-getやapt-cacheを内包し、使いやすいようにカスタムしたコマンド
- エンドユーザー(開発者)が使いやすいように設計されている
aptではインストール中のプログレスバーをはじめ、コマンドライン上にエンドユーザー向けのメッセージが表示されますね。
使用する状況としては、ssh上で直接パッケージをインストールする時などでしょうか。
apt-getコマンドの特徴と使い方
次のapt-getコマンドについて、公式の見解は次の通りです。
- apt-get/apt-cache はコマンドラインのユーザーインターフェースのみを提供します。
- apt-get はリリース間のような大掛かりなシステムアップグレードに最適です。
- apt-get は頑強で安定なパッケージリゾルバーを提供します。
- apt-getはハードウエアリソースへの要求が楽である。メモリーの消費は少なく、実行速度が早い。
- apt-cache はパッケージ名や説明に関して標準の regex を使った検索機能を提供します。
- apt-get と apt-cache は /etc/apt/preferences を使って複数のバージョンのパッケージを管理できますが、それはとても面倒です。
apt-getについてはそのようにありますので、要約すると次の通りです。
- 最も基本的な、CLI専用のパッケージ管理ツールコマンド
- メモリや時間効率が良く、大規模なシステムアップデートに向いている
- 複数のバージョン管理には向かない
CLIで動かすのであれば、今後もapt-getの方を使っても良さそうです。
使用状況は、バッチでパッケージをインストールする時などでしょうか。
それ以外でも、バックグラウンドでのパッケージインストールはよくあると思います。
今後も、使っていく機会は多そうです。
もう一つのコマンド「aptitude」について
もう一つのコマンド「aptitude」について
aptitude コマンドは最も多芸なAPTを使うパッケージ管理ツールです。
- aptitude はフルスクリーンのインタラクティブなテキストユーザーインターフェースを提供します。
- aptitude はコマンドラインのユーザーインターフェースも提供します。
- aptitude はインストールされたパッケージを検査したり利用可能なパッケージを探索したりするような日常のインタラクティブなパッケージ管理に最適です。
- aptitudeはハードウエアリソースへの要求が厳しい。メモリーの消費は多く、実行速度も遅い。
- aptitude はパッケージメタデータ全てに関する拡張されたregex を使った探索を提供します。
- aptitude は /etc/apt/preferences を使わずに複数のバージョンのパッケージを管理できますし、それは非常に直感的です。
要約してみます。
- インタラクティブ(対話)モードとCLIモードの両方が使用できる
- パッケージ関連のトラブルシューティングに向いている
- メモリや速度効率は悪い
- 複数バージョンの管理がしやすい
一番リッチなパッケージ管理ツールですね。
CLIモードも搭載していますが、通常はaptコマンドで良さそうです。
トラブルが起きた場合の確認や、メッセージを見ながら動作をさせたい時に向いています。
何に使えるというよりかは、何かあった時に使うという感じでしょうか。
aptとapt-getコマンドは、目的に応じて使い分けよう
今回はapt、apt-get、そしてaptitudeコマンドについて紹介しました。
それぞれの特徴を、簡単にもう一度まとめてみます。
apt |
インタラクティブ向けにカスタマイズしている。確認しながらの使用におすすめ(sshなど) |
apt-get |
CLIのみに対応。バックグラウンド動作におすすめ(シェルやdockerなど) |
aptitude |
インタラクティブにもCLIにも対応。パッケージの確認作業におすすめ(トラブル時や複数バージョン管理など) |
sshのターミナル上ではaptを使い、Dockerなどのスクリプト上ではapt-getを使う方針で問題ないと思います。
私はほとんど使いませんが、aptitudeという選択肢もあります。
使用する目的に合わせて、最適なコマンドを選択するようにしてください。
参考サイト
Debianドキュメント(日本語): https://www.debian.org/doc/manuals/debian-reference/ch02.ja.html
Debianドキュメント(英語): https://www.debian.org/doc/manuals/debian-reference/ch02.en.html
Debian管理者ハンドブック: https://debian-handbook.info/browse/ja-JP/stable/sect.apt-get.html
Debian管理者ハンドブック(英語): https://debian-handbook.info/browse/stable/sect.apt-get.html