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」と打っちゃいそうですが、片方だけで良いので覚えておきましょう。