
直到一周前,我已經運行 Debian Wheezy 一年多了,沒有出現任何問題。沒有明顯的原因,系統突然認為 Linux 核心僅配置了一半,而且我在網路上找到的所有修復都不起作用。結果,apt
每次執行更新時都嘗試修復它,但失敗了。
細節
症狀
任何時候運行更新時,apt
都會在某個時刻嘗試修復內核,失敗,更新過程將終止並顯示錯誤建議,然後顯示系統是最新的消息。
任何更新活動均以apt
以下內容結束:
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
E: /usr/sbin/update-initramfs.orig.initramfs-tools - command not found
E: On Debian based systems, update-initramfs from initramfs-tools
E: can be installed with:
E: apt-get install initramfs-tools
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-4-amd64.postinst line 696.
dpkg: error processing linux-image-3.2.0-4-amd64 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
linux-image-3.2.0-4-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
核心
幾乎相同的問題在關於 Ask Ubuntu 的問題。接受的答案指出dpkg
狀態文件有問題。狀態條目為linux-image-3.2.0-4-amd64
說已經配置一半了。
作為第一步,我嘗試了以下方法:
administrator@Kwheezy:~$ sudo dpkg-reconfigure linux-image-3.2.0-4-amd64
/usr/sbin/dpkg-reconfigure: linux-image-3.2.0-4-amd64 is broken or not fully installed
重新安裝沒有幫助,因此表示已損壞。
Ask Ubuntu 的解決方案是從dpkg
狀態檔案中刪除該條目,然後重新安裝。就我而言,這也不起作用。該過程完成後,dpkg
狀態檔案已將該條目替換為另一個仍表示已配置一半的條目,且系統行為是相同的。
適當的輸出
重點關注輸出中的錯誤訊息apt
。錯誤總是以以下內容開頭:
/usr/sbin/update-initramfs.orig.initramfs-tools - command not found
果然,該文件不存在。有用的消息建議可以透過安裝來安裝它initramfs-tools
。已經安裝了,但我重新安裝了它。事實證明它apt
已經自己做到了這一點。按照安裝指南出現的所有錯誤訊息initramfs-tools
由該安裝嘗試生成,這永遠不會導致/usr/sbin/update-initramfs.orig.initramfs-tools
正在安裝。
概括
- 我從 Wheezy 儲存庫中獲得了最新的可用 Linux 核心。這是一個很好的副本,滿足所有依賴關係,並且沒有其他使用者遇到問題的報告。
- 系統報告它未完全配置。我沒有找到任何方法來配置它或讓系統停止認為它不是。
答案1
解決
sudo apt-get remove live-tools
sudo apt-get install --reinstall initramfs-tools
sudo apt-get install -f
解釋
在更了解 Fixer1234 的系統之後在聊天中,我確定安裝的包live-tools
與initramfs-tools
.
live-tools
安裝後,它會覆蓋/usr/sbin/update-initramfs
自己的腳本並將原始腳本放入/usr/sbin/update-initramfs.orig.initramfs-tools
.
live-tools
有一些健全性檢查來檢測它是否在即時系統上。如果它不在即時系統上而是在已安裝的系統上,它會嘗試執行/usr/sbin/update-initramfs.orig.initramfs-tools
,這是更新 initramfs 的正確腳本。
在fixer1234的系統中,/usr/sbin/update-initramfs.orig.initramfs-tools
已被刪除。
由於該系統是已安裝的系統,live-tools
可能是不必要的,這就是為什麼我建議將其刪除。
以下是上面“解決方案”部分中提出的每個步驟的工作原理:
sudo apt-get remove live-tools
刪除live-tools
將嘗試恢復/usr/sbin/update-initramfs.orig.initramfs-tools
回/usr/sbin/update-initramfs
,但由於/usr/sbin/update-initramfs.orig.initramfs-tools
不存在,因此會發生錯誤。
live-tools
還是會被刪除,這才是重要的。
我們仍然失蹤/usr/sbin/update-initramfs
。
sudo apt-get install --reinstall initramfs-tools
要恢復/usr/sbin/update-initramfs
,我們重新安裝提供該檔案的軟體包。即,initramfs-tools
.
sudo apt-get install -f
由於 和 的錯誤,您的核心安裝不完整live-tools
,initramfs-tools
因此要完成安裝並解決所有軟體包問題,需要執行最後一步。
現在,您應該擁有一個功能齊全的 Debian 系統。
(順便說一句,這些步驟理論上適用於 Debian 8、Ubuntu 12.04、Ubuntu 14.04、Ubuntu 15.10、Ubuntu 16.04 和 Ubuntu 16.10。)