技術は記憶の彼方へと

覚えたつもりですぐに忘れるエンジニアの備忘録

【Linux】Debian系ディストリビューションのパッケージ管理コマンドの違い

Linux多少できるよね?確か個人用にLinuxマシン持ってるとか言ってたもんね?なんて言われてお仕事依頼されました。
ディストリビューションによってそれぞれ個性があってコマンドが若干違うことは周知の事実。
ディストリビューションを聞いたらUbuntuだとのこと。やったことないんですよね...
普段のマシンはFedoraだし、レンタルサーバも借りてるけどこれまたFedora。好きなの。
CentOSも触ったことあったけど、Debian系はもしかしたらはじめまして?って感じです。
そして、最初に思ったこと。パッケージ管理でdnfが使えない。じゃあyum
yumでもない...調べたらなんか3つくらい出てきた...なんでこんなにあるのさ
ということで本題

目次


apt-get


調べてるサイトの中では圧倒的に多く見かけた子。
Debianプロジェクトが開発したパッケージ管理システム。パッケージのダウンロード、インストールと依存関係があるパッケージの自動取得とアップデートもできる子。
もともとはtar.gzで圧縮されたアーカイブファイルからソースを持ってきてコンパイルすることが当たり前だった時代にアップデートのたびにコンパイルだの整合性だのっていうのは大変だった。
これの管理システムが必要だってことでdpkgコマンドを作って、これを管理するために「Advanced Packaging Tool(通称APT)」が作られ、これのコマンドがapt-getらしい。

うん、わからん。
まぁ、大変だったから楽するためのツール作って、そいつを管理しようってことなんだろう。 だが、この子はUbuntu14.04からは非推奨になったらしい。(現在の最新は長期サポート版の20.04LTS)

apt


先ほどのapt-getとapt-cache(主にパッケージ情報の探索をするもの)を統合し、aptコマンド一つで完結するようになったもの。
14.04から推奨されているコマンドで2014年4月1日からリリースされたAPTができてから16年たってリリースされた新星。
APTを小文字にしただけだと思ったが違い、aptitudeの略らしい。(どうでもいい)

もともと存在していたapt-getの設計上のミスを克服したものである。との公式発表がなされている。
また、upgradeの動作にも違いがあるとのこと。
それは、パッケージの依存関係の変更による現在保有していないパッケージのインストールが必要になった際に現在のパッケージ構成を変えないapt-getではインストールせずにupgradeを停止してしまう事。
aptであれば、更新された依存関係に合わせてインストールしてくれるようです。 今まであったミスも克服したし使ってよねってことらしい。
現状apt-getも使えるようにはなっているが、今後のUbuntu等のディストリビューションのバージョンアップデートの際に非推奨ですって消したりされてもおかしくないかもしれないね。

aptitude


APTの外部プロジェクトとして開発されたものでGUIに対応させたものらしい。
派生した後継という立ち位置らしいが、どうも仕事で指定された18.04では標準インストールされていないものになっている。 もう少し前のバージョンでは標準インストールされていたという話も聞く。
対話型プログラムであり、コンソール準拠のグラフィカルモードを備えているとのこと。
apt-getではできなかったupgradeの際の依存関係変更のパッケージインストールを行う点や、apt-getではパッケージ削除の際に依存関係のために入れたパッケージを消せない(autoremoveオプションをつければ可能)点も改善している。(aptでも消せる)
Debianの公式ではapt-getよりも合理的なパッケージ管理ツールだとのことで今のところはDebianでは残っているらしい。
なんでUbuntuからは消されちゃったんでしょうね?

最後に


あくまで概要をさらっと述べました。
ざっと見た情報等をもとにどれ使うのかってなればaptを使えば問題なさそうだね。
細かいオプションはまぁ、ざっくり見てきた感じあんまり変わらなさそうな印象だけれども、たぶん同じパッケージでも名称が違ったりするんだろうなぁ。そういったところに慣れていかないと始まらないんだろうと感じましたね。

後、調べてて思ったのがaptitudeの情報量少なくないかい?話題に出てくる割に使ってる人ほとんどいないのかな?
それともaptが優秀なものとして出てきて粛清されたのか...
そんなことを考えながら、今回はこの辺で。