在 Ubuntu 22.04 上面常常會遇到跑 apt upgrade
時系統跟你說有些 package 不打算升級:
$ sudo apt upgrade Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done The following packages have been kept back: python3-distupgrade ubuntu-release-upgrader-core ubuntu-release-upgrader-gtk 0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
以往遇到這種情況,如果確定要裝就是開 dist-upgrade
下去,但會發現也還是不為所動:
$ sudo apt full-upgrade Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done The following packages have been kept back: python3-distupgrade ubuntu-release-upgrader-core ubuntu-release-upgrader-gtk 0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
這個可能是遇到 PhasedUpdates,這個設計是在最後一關推出去的階段,一次不要更新 100% 的機器。
可以從 apt policy
看到現在的比率是 20%:(這是我已經升級上去的樣子)
$ apt policy python3-distupgrade python3-distupgrade: Installed: 1:22.04.18 Candidate: 1:22.04.18 Version table: *** 1:22.04.18 500 (phased 20%) 500 http://tw.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages 500 http://tw.archive.ubuntu.com/ubuntu jammy-updates/main i386 Packages 100 /var/lib/dpkg/status 1:22.04.10 500 500 http://tw.archive.ubuntu.com/ubuntu jammy/main amd64 Packages 500 http://tw.archive.ubuntu.com/ubuntu jammy/main i386 Packages
而對於 LTS 的使用者,這個功能在 APT 的支援是從 Ubuntu 22.04 開始,以前只有桌面的 Update Manager 才有支援,所以不太會遇到:
Up to Focal (20.04), Update Manager is the only package manager that supports phased updates (reference). Any other update mechanism installs all updates regardless of the Phased-Update-Percentage.
(話說 wiki 頁上面可以看到有「User stories」這段,用 User story 的格式把這個功能的目的描述出來了)
所以一般人可以忽略掉,而對於有意願想要幫忙測試的人,也可以透過設定蓋過 Phased Updates 的比例設定...