apt update はまだ何もアップデートされてないよ

apt update はまだ何もアップデートされてないよ


Linux サーバー構築 コマンド パッケージ Ubuntu Rocky Linux

色んな技術ブログやTech記事を勉強のために見ているのですが、Linuxサーバーを扱っている解説で以下の勘違いをたまに目にします。

apt updateでインストールされているパッケージを最新の状態に更新しておきましょう。

実はこれ厳密には誤りで、apt updateではパッケージの中身そのものは更新されていません。

実際にパッケージそのものを更新するにはapt upgradeコマンドが必要になります。

▫️apt updateとupgrade

「apt upgradeで更新されるなら、apt uodateは何のために?」と思うかもしれませんが、

apt updateで更新しているのはパッケージのリストです。

つまり、「最新のパッケージはこれがありますよ〜」っていうカタログを引っ張ってきているだけで、upgradeを実行しない限り、手元のパッケージは古い状態のままです。

しかし、用途によってはapt updateだけ実行するのが正しいケースもあります。

例えば、「ローカルのパッケージそのものはバージョン固定をしたい。でも今からインストールする新しいツールは新しいバージョンで入れたい!」みたいなケースです。

パッケージリストが古すぎると、新しくインストールするツールでエラーや不具合が出る可能性があるのですが、apt updateだけでパッケージリストだけを更新する事で互換性の問題が出づらくなります。

ただ、色んな記事を読んでいるとその解説内容のニュアンスから、apt update = スマホのアプリ更新くらいの感覚で最新パッケージに更新されていると勘違いしている人が多いように感じました。

▫️apt updateと dnf updateの違い

ここでさらに面倒なのが、RedHat系のLinuxで使われているdnfコマンドです。

aptコマンドと何が違うのかというと、dnf updateは、①「パッケージリストの更新」②「パッケージそのものの更新」を全て実行してしまいます。

つまり、apt updateの要領でパッケージリストだけ更新しておこうと不用意にdnf updateコマンドを叩いてしまうと意図せずにバージョンが勝手に上がってしまうリスクがあります。

実務の現場ではバージョンを勝手に上げてしまうと急に正常動作しなくなるケースが多々あるので、ここは注意ポイントですね。

※ちなみに、dnfコマンドでパッケージリストだけを更新したい場合、dnf check-updateを使用します


「dnf updateでその2つの役割を担うなら、dnf upgradeは何をするの?」と疑問になった方もいるかと思います。

実は全く同じ役割です。

dnf updateとdnf upgradeコマンドはエイリアス関係にあるので、処理内容は全く同じです。

どれを実行しても同じ結果になります。

ubuntuのaptコマンドに慣れている人は、つい癖で「dnf update && dnf upgrade」と打っちゃいそうですが、片方だけで良いので覚えておきましょう。