Linux

當我嘗試安裝 Imagemagick 時,Aptitude 刪除了一些模組,我該如何撤消此操作?

  • August 25, 2018

昨天我嘗試安裝我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 autoremoveapt-get remove <other-packages>刪除其不再需要的依賴項;--purge如果您還想刪除配置文件,請小心附加到任一命令)。

然後你可以重新安裝失去的包。或者更確切地說,您想強制重新安裝您感興趣的主要損壞的軟體包,並像往常一樣讓 apt-get/aptitude 在途中自動安裝舊的依賴項。這樣,瑣碎的 lib* 依賴項就不會被標記為“手動安裝”,這將在必要時防止將來自動刪除。

要重新安裝包: ,如有必要apt-get install <package>,可選擇附加--reinstall到顯式重新解包包。

此外,您可以查看man apt-getman aptitude了解他們的選擇。

祝你好運!

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