4ensiX

4ensiX

主に情報セキュリティ、CTF関係のこと、気になったことを記す。フォレンジックを真面目にやりつつ、2020はCTFのForensic問全部の勢い。

apt-getは、もう古い。aptを使いなさい。

今回はaptとかapt-get 関連について、まとめてみた。

正直自分はそれほど、詳しくないのでこの記事は参考程度で許してください。

自分用の知識のまとめ程度の話なので、申し訳ないけど悪しからず。

 

 

パッケージ管理用フロントエンドツール

apt は Debian系の OS を使っている人ならよく利用するパッケージ管理用のコマンドである。Red Hat系であれば yumVine Linux とかだと rpm が同じ機能を持つ。

まず、 Debian系のパッケージ管理用ツールはいくつもありその中でよく使われるのがapt-get , apt , aptitude らしい。

 

apt-get

Debian系のパッケージ管理用ツールの始まりである。

 

apt

apt-get に続き開発されたもの。基本的に apt-get のサブコマンドをそのまま使える。

 

aptitude

apt よりも後に開発された。CUIツール だがGUI的にパッケージの管理ができる。基本的に apt-get のサブコマンドをそのまま使える。個人的にはあまり役に立つ気がしないが、もしもの時のために覚えておくのもいいかもしれない。今回は触れない。

 

apt と apt-get は何が違うのか

apt を使う人もいるし、apt-get を使う人もいる。しかし、apt-get より apt が推奨されているのをご存知だろうか。

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

                                                                    Debian 管理者ハンドブックより

www.debian.org

 

設計上のミスがどのようなものかは分からないが apt を利用した方が良いのだろう。

 

ここまでの参考サイト

eng-entrance.com

 

update と upgrade の違い

OSの初回起動時など、アップデートの確認を行うときに使うコマンド

$sudo apt update

$sudo apt upgrade

これらこの順で行うべきだというのには理由がある。それはどのようなものなのか。

 

update

パッケージのリポジトリから、パッケージの名前やバージョン、依存関係を取得するコマンドです。そして更新すべきソフトのリストを更新する。ソフトウェアのアップデートに必要なものをダウンロードするだけで、まだソフトウェアのアップデートは行われない。アップデートできるパッケージの個数を教えてくれる。

 

upgrade

アップグレード可能なパッケージを更新する。ただし、パッケージのアップグレードのためにインストール済みのパッケージの削除が必要な場合は、安全のためそのパッケージを[保留]としてインストールしない。

 

これらより、

$sudo apt update

$sudo apt upgrade

の順で入力する必要がある。

 

ここまでの参考

bobbyquine.hatenablog.com

 

dist-upgrade と full-upgrade の違い

 

$sudo apt-get dist-upgrade

$sudo apt full-upgrade

この二つがシステム全体をアップグレードするために必要とされる場合には、現在インストール済みのパッケージを削除した上でアップデートができるコマンドであり、upgrade だけだと[保留]になる分もアップデートする。

少し話は変わって apt では基本的に apt-get でのコマンドが使えるので、

$sudo apt dist-upgrade

は可能である。Debian 管理者ハンドブックには次のコマンドは使えないと考えていたが、

$sudo apt-get full-upgrade

実際に打ち込んでみるとそんなことはなかった。

 

本題に入る。dist-upgrade と full-upgradeの違いについて StackExchage にあったものを見てみる。

https://askubuntu.com/questions/770135/apt-full-upgrade-versus-apt-get-dist-upgrade

ここでは二つのコマンドが同じであるという意見と異なるという意見がある。ただ、異なるという意見を挙げた側は部分的に同じだという結論に至っている。

次にDebian 管理者ハンドブックには、この二つの違いについて、

より重要なアップグレード、たとえば Debian のメジャーバージョンをアップグレードするなどの場合、apt full-upgradeを使ってください。apt full-upgrade を実行した場合、apt はアップグレードに伴う新しい依存関係により不要となったパッケージを削除します。また、apt full-upgrade は Debian 不安定版 リリースを日常的に使い、毎日開発進化を追いかけているユーザが使うコマンドです。これは説明がほとんど必要ないくらいとても単純です。そして APT の評判はこの偉大なる機能性が担っています。
apt と異なり、aptitude および apt-get では full-upgrade コマンドを使うことができません。その代わり、apt-get dist-upgrade (「ディストリビューションアップグレード」) を使ってください。dist-upgrade コマンドは歴史的かつよく知られており、apt と aptitude はユーザの利便性を考慮して dist-upgrade を受け付けます。
Debian 管理者ハンドブック 6.2.3. システムのアップグレード より

 

個人的な結論としては、細かくみるとこれらのコマンドは違うものであるが見かけ上の振る舞いは同じ動作をするコマンドだと考える。今後アップデートを行う場合は、公式で推奨されている。

$sudo apt full-upgrade

を使うべきだろう。

 

最後に

挑発的なタイトルにしてはいるが、結局のところ記事を読んでどう判断するかはそれぞれ色々あると思うので己が信じるものを信じていただきたい。

参考

qiita.com

qiita.com

linuxfan.info

www.garunimo.com