Ubuntu

apt-get 升級 - 主管錯誤

  • April 5, 2017

我在 AWS 上有兩台 Ubuntu 16.04.2 LTS 伺服器。我想修補它們,但我收到一個錯誤,我無法弄清楚下一步。

sudo apt-get upgrade 給了我:

Setting up supervisor (3.2.0-2ubuntu0.1) ...
insserv: script supervisor: service supervisor already provided!
insserv: exiting now!
update-rc.d: error: insserv rejected the script header
dpkg: error processing package supervisor (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
supervisor
E: Sub-process /usr/bin/dpkg returned an error code (1)

基於其他類似的錯誤,我嘗試過:

sudo apt-get clean && sudo apt-get autoremove 
sudo apt-get -f install
sudo dpkg --configure -a

這些伺服器遠非“乾淨”。它們被創建為副本的副本。在軟體方面,他們有 PHP 7.0、Laravel 並在主管下執行 Laravel 隊列。但我不知道這是否重要。

我查看了主管問題列表,但沒有發現任何似乎適用於我的問題。

看來您已經通過其他來源安裝了主管。該insserv程序管理啟動腳本,但無法註冊此軟體包的副本,supervisor因為它已經有一個supervisor要啟動的集合。看一眼

grep Provides /etc/init.d/*

並查看哪些腳本聲稱可以提供主管。

至於解決這個問題,您需要追踪現有的supervisor來源並以相同的方式更新它。如果你執行dpkg -S /etc/init.d/filename它會告訴你它是否來自其他包(也許你已經從一個 PPA 安裝了一些東西,將主管與另一個包捆綁在一起?),如果沒有出現,那麼現有的主管很可能是手動安裝的二進制下載或從原始碼建構。

另一種選擇是啟動一個乾淨的 16.4 映像,並且(如果您想要 php7.1 而不是 7.0 或需要其他不在 16.4 中的軟體)使用您需要的軟體版本找到維護的 PPA。記錄您安裝的所有內容,包括您安裝的版本,以及您從哪裡獲得它們(特別是如果它是在沒有軟體包的情況下安裝的),並測試您的軟體是否可以在映像上執行。您還需要跟踪依賴關係,尤其是給定包所需的內容。這在使用時不太重要,apt但如果您手動建構東西,您需要記住在升級之前檢查它app是否適用於最新版本。現在投資這個時間將使繼續前進變得更加容易。libfoo``libfoo

引用自:https://serverfault.com/questions/841895