aptコマンドとフェーズドアップデートによるパッケージアップデートの保留
以前紹介したように「Ubuntu 21.04」から「フェーズドアップデート(Phased updates)」が「apt」コマンドでも有効になりました。フェーズドアップデート
フェーズドアップデートに関しては以前紹介しておりますので、以下を参照してください。元々フェーズドアップデートは「Ubuntu Desktop 13.04」の「ソフトウェアの更新」で導入された機能です。
その後APT全体でこの機能が有効化され、「Ubuntu 22.04 LTS」でも引き続き有効になっています。
フェーズドアップデートは、特定のパッケージのアップデートをユーザーに段階的に提供する仕組みです。
言い換えれば一度に全ユーザーにアップデートを提供するのではなく、アップデートを提供するユーザーを絞りながら、徐々に提供対象のユーザーを増やしていく機能です。
パッケージアップデートの保留
アップデート可能なパッケージでもフェーズドアップデートの条件に合致すると、フェーズドアップデートによるアップデートの抑制が行われ、それらのパッケージは保留パッケージとして扱われます。
例えば、とある環境で以下のようにアップグレード可能なパッケージがあります。
すべてのパッケージをアップデートしようとしても、以下のようにいくつかのパッケージはアップデートから保留され、アップデート対象になりません。
ちなみに「ソフトウェアの更新」から見ると、以下のようになっています。
チェックを入れようとしてもチェックが入りません。
そのためそのパッケージに不具合(リグレッション)がなければ、最終的にすべてのユーザーにアップデートが提供されます。
もし問題が見つかれば、アップデートの提供が中止されます。
ちなみにここでは便宜上「ユーザー」という表現を用いていますが、正確には「Ubuntuをインストールしたマシン」ごとにフェーズドアップデートの判定が行われています。
一人のユーザーが複数のUbuntu PCを所有するケースや、仮想マシンを利用して複数のUbuntu環境を持つこともあるでしょう。
その場合Ubuntuをインストールしたマシンごとに、アップデートの提供タイミングが異なります。
同じタイミングになることもあれば、そうでないこともあります。
もし指定されたパッケージがフェーズドアップデートにより保留されていた場合、以下のように現在の段階が表示されます。
例えば、とある環境で以下のようにアップグレード可能なパッケージがあります。
すべてのパッケージをアップデートしようとしても、以下のようにいくつかのパッケージはアップデートから保留され、アップデート対象になりません。
ちなみに「ソフトウェアの更新」から見ると、以下のようになっています。
チェックを入れようとしてもチェックが入りません。
最終的にすべてのユーザーにアップデートが提供される
フェーズドアップデートは、パッケージのアップデートをユーザーに段階的に提供する仕組みです。そのためそのパッケージに不具合(リグレッション)がなければ、最終的にすべてのユーザーにアップデートが提供されます。
もし問題が見つかれば、アップデートの提供が中止されます。
ちなみにここでは便宜上「ユーザー」という表現を用いていますが、正確には「Ubuntuをインストールしたマシン」ごとにフェーズドアップデートの判定が行われています。
一人のユーザーが複数のUbuntu PCを所有するケースや、仮想マシンを利用して複数のUbuntu環境を持つこともあるでしょう。
その場合Ubuntuをインストールしたマシンごとに、アップデートの提供タイミングが異なります。
同じタイミングになることもあれば、そうでないこともあります。
フェーズドアップデートにより保留されているかどうか調べるには
フェーズドアップデートによりパッケージのアップデートが保留されているかどうか調べるには、以下のコマンドを実行します。apt policy パッケージ名
もし指定されたパッケージがフェーズドアップデートにより保留されていた場合、以下のように現在の段階が表示されます。
保留という扱いが分かりにくい
フェーズドアップデート以外にパッケージのアップデートが保留されるケースとしては、パッケージの依存関係が満たせず、パッケージのアップデートが保留されるケースがあります。ユーザーが適切なパッケージ管理及びリポジトリー管理を行っているなら、基本的にこのような問題は発生しません。
しかしユーザーの中には保留されているパッケージが、フェーズドアップデートによる保留なのか、それとも問題による保留なのかが分かりにくく、以下で改善して欲しいとのフィードバックを寄せています。
もし同じようにこの状況を改善して欲しいなら、上記フィードバックの右上辺りにある炎アイコンをクリックしておくとよいでしょう。
上記フィードバックの炎アイコンは、Twitterで言うところの「いいね」ボタンみたいなものです。