カーネル パッケージの保留の背後にあるロジックは何ですか?

カーネル パッケージの保留の背後にあるロジックは何ですか?

もう少し知識のある人が、apt-get upgradeUbuntu 16.04 以降で行うことに関して何かを説明してくれることを期待しています。

私が目にしている動作は、apt-get upgrade新しいカーネル パッケージがインストールされないこともあれば、インストールされることもあります。

つまり出力から:

The following packages have been kept back:
linux-generic linux-headers-generic linux-image-generic linux-tools-generic

するを実行すると、それらのパッケージがインストールされることはわかっていますdist-upgrade(したがって、その回答を繰り返さないでください :-)。私が知らないのは、それらのパッケージの保留を制御しているものが何であるかです。
を実行すると、新しいカーネルがインストールされることもあればapt-get upgrade、パッケージが保留されることもあります。

これらの保留は Canonical 自身によって行われているのでしょうか、それとも他のパッケージへの依存関係に関連しているのでしょうか?

答え1

このapt-get upgradeコマンドはパッケージを新しいバージョンにアップグレードするだけで、新しいパッケージをインストールしたり、パッケージをアップグレードするためにパッケージを削除したりすることはありません。

カーネルをアップグレードすると、実際には新しいカーネルがインストールされます。Ubuntu はカーネルをアップグレードせず、古いカーネルを保持したまま新しいカーネルをインストールします。

しかし、なぜでしょうか? カーネルを最後のバージョンにアップグレードするのではなく、新しいバージョンをインストールするのはなぜでしょうか? その答えは安定性のためです。

カーネルのアップグレード後に何が起こるかはわかりません。システムの起動に失敗したり、ハードウェアが正常に動作しなくなる可能性があります。問題が発生した場合でもマシンが動作し続けるように、常に古いバージョンを保存しておく必要があります。

動作中のカーネルをアップグレードしないでください。

Slackwareは言うシステムアップグレードガイド


より詳しい情報

man apt-get:

いかなる状況においても、現在インストールされているパッケージが削除されたり、まだインストールされていないパッケージが取得されてインストールされたりすることはありません。別のパッケージのインストール状態を変更せずにアップグレードできない、現在インストールされているパッケージの新しいバージョンは、現在のバージョンのままになります。

ただし、ご存知のとおり、apt-get dist-upgradeまたはを使用してapt upgradeこれらの「保持された」パッケージをインストールすることもできます。

$ apt-cache search linux-image-4.4.*-generic | tail -3
linux-image-4.4.0-75-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
linux-image-4.4.0-77-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
linux-image-4.4.0-78-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP

わかりますか? これらは異なるパッケージなので、アップグレードではなく新規インストールになります。

関連情報