當我嘗試安裝 Imagemagick 時,Aptitude 刪除了一些模組,我該如何撤消此操作?
昨天我嘗試安裝我
apt-get
最初使用的Imagemagick,它返回錯誤。我已經嘗試安裝 ImageMagick 幾個小時了,所以我不耐煩了。stackoverflow 上的一篇文章說,如果apt-get
不起作用,我可以嘗試使用aptitude
. 所以我做了。就在那時,一切都開始崩潰了。Aptitude 開始刪除一大堆模組。我認為這是過程的一部分。所以現在:
- apache2 沒有啟動
- nginx 不執行,我無法執行 plesk
- 我的郵件伺服器不再工作,因為 plesk 也不能工作
有什麼辦法可以回滾嗎?以後有什麼辦法可以避免這種情況嗎?我期待 aptitude 的行為與 apt-get 相同。
兩者
apt-get
和都是底層命令 Debian 軟體包系統aptitude
的便捷前端。dpkg
他們(預)處理依賴關係和衝突解決以及包下載等內容,然後再dpkg
使用顯式指令呼叫以安裝下載的 *.deb 文件,或刪除包及其依賴項,或自動(取消)配置它們,或其他…您大概要求
aptitude
強制安裝某個軟體包。它的衝突解決方案啟動並強製完全刪除衝突包,破壞其他包。據推測,依賴項解析發現某些依賴項必須安裝在特定版本或架構中,這些依賴項不能與已安裝的依賴項共存。某些事情根本行不通,但既然你要求強制安裝……好吧,你得到了你所要求的。您可以在此處找到有關係統包歷史和狀態的有用資訊。使用
less <log-file>
(或zless <compressed-log-file>
)讀取這些文件。
- 您可以在其中
/var/log/apt/history.log*
看到命令歷史記錄apt-get
以及它為您的請求/命令提出的解決方案。- 在
/var/log/apt/term.log*
您可以看到所述請求/命令的輸出。- 在
/var/log/aptitude*
你會看到一些能力活動。- 您可以在其中
/var/log/dpkg.log*
看到單個包狀態虎鉗發生了什麼。
dpkg -l
將列出您系統上的所有軟體包及其狀態,包括以前安裝的軟體包的狀態(即“已刪除”的軟體包)。列表標題(或man dpkg
)將告訴您第一列中字母的含義。第 1 封信將告訴您/apt-get/aptitude 為包裹請求的狀態。第二個將告訴包目前所處的狀態。如果有第三個字母R
,則該包需要重新安裝。dpkg -l | grep -v "^ii"
將列出相同的軟體包,不包括“目前按要求安裝”的軟體包,這可能有助於縮小“已刪除”或“半配置”或“半安裝”軟體包的範圍。如果添加| less
到任一命令管道,則可以滾動輸出。您現在要做的是找出哪些軟體包已被刪除以及原因。“為什麼”部分大概如上所述,不能輕易解決。因此,您可能希望首先刪除/清除您的 imagemagick(執行
apt-get remove <the-offending-package>
,然後繼續apt-get autoremove
或apt-get remove <other-packages>
刪除其不再需要的依賴項;--purge
如果您還想刪除配置文件,請小心附加到任一命令)。然後你可以重新安裝失去的包。或者更確切地說,您想強制重新安裝您感興趣的主要損壞的軟體包,並像往常一樣讓 apt-get/aptitude 在途中自動安裝舊的依賴項。這樣,瑣碎的 lib* 依賴項就不會被標記為“手動安裝”,這將在必要時防止將來自動刪除。
要重新安裝包: ,如有必要
apt-get install <package>
,可選擇附加--reinstall
到顯式重新解包包。此外,您可以查看
man apt-get
並man aptitude
了解他們的選擇。祝你好運!