Linux-Kernel
為什麼 apt autoremove 不會一次刪除所有舊核心包?
自從他們發布了 Meltdown 漏洞更新檔以來,我一直在升級我們的 Ubuntu 伺服器的核心。我注意到幾乎在所有伺服器上,重新啟動後我必須執行
apt autoremove
兩次才能清理系統上仍然存在的所有舊核心。如果我第一次執行它,它首先會刪除兩個舊版本的核心:
% sudo apt autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linux-headers-4.4.0-103 linux-headers-4.4.0-103-generic linux-headers-4.4.0-104 linux-headers-4.4.0-104-generic linux-image-4.4.0-103-generic linux-image-4.4.0-104-generic linux-image-extra-4.4.0-103-generic linux-image-extra-4.4.0-104-generic 0 upgraded, 0 newly installed, 8 to remove and 2 not upgraded. After this operation, 596 MB disk space will be freed.
但是,在它完成後我
apt autoremove
再次執行,它刪除了一個舊版本:% sudo apt autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linux-headers-4.4.0-96 linux-headers-4.4.0-96-generic linux-image-4.4.0-96-generic linux-image-extra-4.4.0-96-generic 0 upgraded, 0 newly installed, 4 to remove and 2 not upgraded. After this operation, 298 MB disk space will be freed.
我想知道,為什麼它不能一次性做到這一點?
核心的維護者腳本,特別
/etc/kernel/postinst.d/apt-auto-removal
是建構一個要保留的核心列表,作為 APT 配置儲存在/etc/apt/apt.conf.d/01autoremove-kernels
. 此程序保留目前執行的核心、正在配置的核心以及兩個最新安裝的核心。大概是在您第一次清理之前最後一次執行腳本時,
-96
由於它屬於其中一個類別,因此最終受到保護。在您第一次清理後,它不再這樣做並成為移除的候選對象。如果您想弄清楚原因,該01autoremove-kernels
文件包含調試資訊;在第一次清理之前和之後再次查看它,應該會揭示為什麼各種核心版本受到保護。核心自動刪除是有目的的保守和謹慎的錯誤。
unattended-upgrades
您可以使用;自動(最終)處理這個問題 有關詳細資訊,請參閱Ubuntu 維基。