APTがフェーズドアップデートに対応
「APT」が「APT 2.1.16」でフェーズドアップデート(Phased Update)に対応しました。フェーズドアップデートに対応した「APT 2.1.16」が「Ubuntu 21.04」で採用されるため、「apt」や「apt-get」コマンドでもフェーズドアップデートが有効になります。
フェーズドアップデート
元々「Ubuntu Desktop」では「ソフトウェアの更新(update-manager)」がフェーズドアップデートに対応しており、「ソフトウェアの更新」経由でソフトウェアをアップデートしているユーザーはすでにフェーズドアップデートが有効になっています。その一方で「apt」や「apt-get」コマンドはフェーズドアップデートに対応していないため、「Ubuntu Desktop」でもこれらのコマンドを利用してソフトウェアをアップデートしている場合、フェーズドアップデートが有効になっていません。
さてそもそもフェーズドアップデートとはどういう機能なのかは以前紹介しておりますので、以下を参照してください。
APTもフェーズドアップデートに対応
そして「APT」もフェーズドアップデートに対応しました。これにより「apt」や「apt-get」コマンドもフェーズドアップデートに対応するため、ソフトウェアのアップデートに主にこれらのコマンドを利用する「Ubuntu Server」や「Raspberry Pi」、コンテナーでもフェーズドアップデートが有効になります。
マシンIDでマシンを区別する
さてフェーズドアップデートの対象になっているパッケージは、対象のマシンをマシンID、対象となっているパッケージ名及びパッケージバージョンで区別します。この時ユーザーのマシン(PC)を区別する識別子がマシンIDです。
APTの設定
「/etc/machine-id」ファイルにマシンIDが記述されており、このマシンIDでフェーズドアップデートの対象を区別しています。マシンIDのフォーマットはこのファイルに記述されているようにUUIDのようなフォーマットになります。
複数のマシンを同一マシンと認識させるには
もし「APT」に複数のマシンを同一マシンと認識させるには、マシンIDを「APT::Machine-ID」オプションで指定するか、マシンIDが記述された別のファイルを「Dir::Etc::machine-id」オプションで指定します。常にすべてのパッケージをアップデート対象にするには
必要なら従来の動作と同じようにフェーズドアップデートを無効にして常にすべてのパッケージをアップデート対象にすることも可能です。この場合「APT::Get::Always-Include-Phased-Updates」オプションに「true」を指定します。
これでフェーズドアップデートの対象になっているすべてのパッケージが常にアップデートに含まれるようになります。
ソフトウェアの更新の設定に従う
「APT」は「ソフトウェアの更新」のフェーズドアップデートに関する設定と連携します。/etc/machine-idファイルの参照
「/etc/machine-id」ファイルは「Dir::Etc」設定で指定されているディレクトリーから検索されます。もし「Dir」や「Dir::Etc」設定に別のディレクトリー指定する場合、その先に「/etc/machine-id」ファイルのコピーを配置するか、上記で紹介したオプションでマシンIDを指定しないと、マシンIDが見つけられずフェーズドアップデートが無効になります。
留意点
留意点です。新規にインストールするパッケージは対象にならない
新規にインストールするパッケージはフェーズドアップデートの対象になりません。これはパッケージのインストールであってパッケージのアップデートではないためです。
APTライブラリーを利用するアプリも影響を受ける
「apt」や「apt-get」コマンド自身もそうですが、APTライブラリーを利用しているAPTのフロントエンドも本影響を受けます。例えば「aptitude」や「packagekit」が該当します。