Ubuntu
apt-get 升級 - 主管錯誤
我在 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