Ubuntu 16.04以降でapt-get upgrade
を実行することに関して、もう少し知識のある人が何かを説明できることを期待しています。
私が見ている振る舞いは、apt-get upgrade
が新しいカーネルパッケージをインストールしない場合があり、時には:
すなわち、出力から:
The following packages have been kept back:
linux-generic linux-headers-generic linux-image-generic linux-tools-generic
I dodist-upgrade
を実行するとそれらのパッケージがインストールされることを知っています(その答えを繰り返さないでください:-)。私が知らないのは、それらのパッケージの保留を制御していることです。apt-get upgrade
を実行すると、時々新しいカーネルがインストールされ、パッケージが保持される場合があります。
これらの保留はCanonical自体によって設定されていますか?それは他のパッケージの依存関係に関連していますか?
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
見る?これらは異なるパッケージであるため、アップグレードではなく新規インストールです。