Debian の apt/apt-get/aptitude について

和田です。最近は PC で ASTRONEER をやっています。惑星開拓楽しいです。

さて本日の話題ですが、 Debian 系の OS を使っていると知らず知らずのうちにお世話になっているはずの apt/apt-get/aptitude についてです。

これらはすべて Debian 系 OS のパッケージを管理するためのツールです。Red Hat Enterprise Linux 系で言うところの yum に当たります。

なんで3種類もあるの?そもそもどう違うの?

本当は3種類以上あるみたいです……。またそんなにたくさん種類がある背景としては、 APT (及び dpkg, ar) だとパッケージ管理が辛いということがあるようです。

また、違いについては apt, apt-get, aptitude という文字列を見たとき、『apt/apt-get は関連してそうだけど、 aptitude ってなに?』となるかと思います(なるよね?)。今回は私が分かる範囲でざっくり説明していきます。

その前に APT についてです。

APT について

突然大文字表記になりましたが、これは Advanced Package Tool の略称になります。これは Debian 系の OS に搭載されるパッケージ管理システムで、パッケージのインストール、依存関係の解消、システムの更新などを行ってくれます。

APT のフロントエンドとして存在するのが、今回紹介する apt/apt-get/aptitude です。

apt-get

apt-get は最初の APT フロントエンドツールです。おそらく Debian や Ubuntu を触ったことがあるデベロッパーの方なら叩いたことがあるのでは無いのでしょうか。

後述する apt/aptitude は基本的には apt-get のサブコマンドをそのまま使えます。

今でもよく色んな所で apt-get を使用してパッケージをインストールしていますが、実は今では apt-get より apt が推奨されているようです。Debian 管理者ハンドブック によると

apt は APT から提供されているもう一つのコマンドラインベースフロントエンドで、apt-get の持っていた設計上のミスを克服しています。

とあります。

『設計上のミス』が何を指しているのかは定かではありませんが、私の肌感として、目的により複数のコマンドを使い分ける必要があるのが原因かと思います。例えば「インストール済みのパッケージを確認したい」や、「インストールしたいパッケージの情報を確認したい」といったことをしたい場合、別のコマンドが必要になります (それぞれ dpkg, apt-cache)。

その点が煩雑で、より良いパッケージ管理フロントエンドが開発されて、非推奨になったのかなと推察します。

aptitude

aptitude gui

aptitude は、CUI ツールなのに グラフィカルな表示をしてくれるツールです。また apt-get での機能もだいたいそのまま使えます。

こう書くととても良いもののように聞こえますが、CUIでの使い方に加え GUI での使い方も覚えないといけないという本末転倒感があります。

一応、いちいちコマンドを叩きパッケージについての確認を行わなくても済むという利点もありますが、今だったらググってからインストールを行うことがほとんどだと思います(想像)。そのためせっかくの GUI もあまり利点になっていません。

更なる追い打ちとして、 Ubuntu 16.04 ではデフォルトでインストールされていないという冷遇っぷりです (いままでデフォルトでインストールされていたことあったのかな?)

apt

最後は真打ち apt です。

apt-get と同等のサブコマンドを持ちつつ、1コマンドで大体のことが完結できるようになったのが apt です。もちろんグラフィカル表示もありません ;p

先述の Debian 管理者ハンドブック でも apt が推奨されています。これから新しく Debian 系 OS を触る場合は apt を使うようにしましょう(布教)

なお注意点としては、 apt のバージョンにより使えるサブコマンドが少ない事があります。

例えば Ubuntu 16.04 で入っている apt では autoremove サブコマンドが使用できますが、Ubuntu 14.04 では使用できません。ですが autoremove サブコマンドは、不要になった非依存パッケージを削除してディスク容量を空けるというのが主な使い方だと思っています。そのためそこまで重要じゃないかなと思っています。どうしても削除したい場合は、旧来の apt-get autoremove で我慢しましょう。

まとめ

主だったパッケージ管理フロントエンド3つを紹介しましたが、結論としては apt を使っていこ です。

それぞれのパッケージ削除時のスタンスの違いなどもありますので、興味がある方は更に調べてみると面白いかもしれません。