Debian

無法刪除舊核心映像以釋放磁碟空間以解決“linux-image-…但未安裝”/“寫入失敗(設備上沒有剩餘空間)”

  • August 11, 2022

當我執行sudo apt-get upgradeorsudo apt-get autoremove時,它返回:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
linux-image-amd64 : Depends: linux-image-5.10.0-16-amd64 (= 5.10.127-2) but it is not installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

然後,當我執行時sudo apt --fix-broken install,它返回:

[...]
Preparing to unpack .../linux-image-5.10.0-16-amd64_5.10.127-2_amd64.deb ...
Unpacking linux-image-5.10.0-16-amd64 (5.10.127-2) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-5.10.0-16-amd64_5.10.127-2_amd64.deb (--unpack):
cannot copy extracted data for './boot/vmlinuz-5.10.0-16-amd64' to '/boot/vmlinuz-5.10.0-16-amd64.dpkg-new': failed to write (No space left on device)
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-5.10.0-16-amd64_5.10.127-2_amd64.deb

我在第二台 Debian11/KDE 電腦上遇到了幾乎相同的錯誤,並顯示相同的錯誤消息。

在那裡,我可以使用這裡的這兩個命令來解決它,以釋放引導分區上的磁碟空間。但是,刪除不需要的核心映像的命令在這台電腦上不起作用:當我執行時

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

它顯示了許多核心映像文件名,但是當我執行完整命令時

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt -y purge

它不會刪除它們。當我執行前一個命令並且沒有釋放磁碟空間時,仍然顯示相同的文件名,所以我的問題仍然存在。上面的輸出是:

The following packages have unmet dependencies:
linux-headers-amd64 : Depends: linux-headers-5.10.0-14-amd64 (= 5.10.113-1) but it is not going to be installed
linux-image-amd64 : Depends: linux-image-5.10.0-16-amd64 (= 5.10.127-2) but it is not going to be installed E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

  • 首先,所有這些都不應該是必需的,因為升級應該可以順利進行並且很容易做到,基本上大多數奶奶都能做到。如果可用磁碟空間有問題,它應該提示使用者(在控制台以及像 Apper 這樣的 GUI 中,如果用於升級)執行清除舊核心映像(可能使用上面的命令)或執行sudo rm -rf /var/cache/apt/archives/*或清除等操作/tmp或執行sudo apt-get autoremove/autoclean或其他取決於需要多少磁碟空間和位置的事情。它應該計算需要多少磁碟空間並檢查是否有足夠的可用空間。或者,如果可用空間不足,它可以一次執行升級並在每次升級後進行清理,或者通知使用者併中止升級,直到有足夠的磁碟空間可用以防止出現任何問題。這可能是一個單獨的問題/問題。它非常不方便、過時、不安全且對使用者不友好。
  • 如何刪除那些舊核心映像以釋放所需的磁碟空間?如果這不是解決此問題的推薦途徑(同樣,它在我也遇到此問題的另一台電腦上工作),那麼請(也?)添加您將如何解決它。

我無法幫助您解決第一個要點。要解決第二個問題,您必須暫時刪除linux-headers-amd64and linux-image-amd64

sudo apt remove linux-{headers,image}-amd64
sudo apt autoremove --purge
sudo apt install linux-{headers,image}-amd64

如果您安裝unattended-upgrades,它將在不再需要核心時為您刪除核心。

引用自:https://unix.stackexchange.com/questions/713269