由於未滿足的依賴關係,無法安裝 puppet
我正在嘗試在新的 ubuntu 14.04 機器上安裝 puppet,但出現以下錯誤
某些軟體包無法安裝。這可能意味著您請求了一種不可能的情況,或者如果您使用的是不穩定的發行版,一些必需的軟體包尚未創建或已從 Incoming 中移出。以下資訊可能有助於解決這種情況:
The following packages have unmet dependencies: puppet : Depends: puppet-common (= 3.7.0-1puppetlabs1) but it is not going to be installed E: Unable to correct problems, you have held broken packages.
我已按照此處的說明進行了以下操作
$ wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb $ sudo dpkg -i puppetlabs-release-trusty.deb $ sudo apt-get update
我也試過
apt-get install ruby apt-get -f install uncommenting the 'devel' sources in puppetlabs.list
任何幫助將不勝感激。
編輯 1
如果我嘗試安裝缺少的“puppet-common”軟體包,我會收到一條類似的消息,提示我缺少“facter”。
puppet-common : Depends: facter (>= 1.7.0) but it is not going to be installed
如果我嘗試安裝它,我會得到
facter : Depends: virt-what but it is not installable
編輯 2 這就是我的來源的樣子
/etc/apt/sources.list
deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted
/etc/apt/sources.list.d/puppetlabs.list
deb http://apt.puppetlabs.com trusty main deb-src http://apt.puppetlabs.com trusty main deb http://apt.puppetlabs.com trusty dependencies deb-src http://apt.puppetlabs.com trusty dependencies deb http://apt.puppetlabs.com trusty devel deb-src http://apt.puppetlabs.com trusty devel
編輯 3請在下面找到 apt-get update 的輸出
Ign http://apt.puppetlabs.com trusty InRelease Hit http://apt.puppetlabs.com trusty Release.gpg Hit http://apt.puppetlabs.com trusty Release Ign http://ports.ubuntu.com trusty InRelease Hit http://apt.puppetlabs.com trusty/main Sources Ign http://ports.ubuntu.com trusty-updates InRelease Hit http://apt.puppetlabs.com trusty/dependencies Sources Ign http://ports.ubuntu.com trusty-security InRelease Hit http://apt.puppetlabs.com trusty/devel Sources Hit http://apt.puppetlabs.com trusty/main armhf Packages Hit http://ports.ubuntu.com trusty Release.gpg Hit http://apt.puppetlabs.com trusty/dependencies armhf Packages Hit http://apt.puppetlabs.com trusty/devel armhf Packages Hit http://ports.ubuntu.com trusty-updates Release.gpg Hit http://ports.ubuntu.com trusty-security Release.gpg Hit http://ports.ubuntu.com trusty Release Hit http://ports.ubuntu.com trusty-updates Release Hit http://ports.ubuntu.com trusty-security Release Hit http://ports.ubuntu.com trusty/main Sources Hit http://ports.ubuntu.com trusty/restricted Sources Hit http://ports.ubuntu.com trusty/main armhf Packages Hit http://ports.ubuntu.com trusty/restricted armhf Packages Hit http://ports.ubuntu.com trusty/main Translation-en Hit http://ports.ubuntu.com trusty/restricted Translation-en Hit http://ports.ubuntu.com trusty-updates/main Sources Hit http://ports.ubuntu.com trusty-updates/restricted Sources Hit http://ports.ubuntu.com trusty-updates/main armhf Packages Ign http://apt.puppetlabs.com trusty/dependencies Translation-en_US Ign http://apt.puppetlabs.com trusty/dependencies Translation-en Hit http://ports.ubuntu.com trusty-updates/restricted armhf Packages Ign http://apt.puppetlabs.com trusty/devel Translation-en_US Hit http://ports.ubuntu.com trusty-updates/main Translation-en Ign http://apt.puppetlabs.com trusty/devel Translation-en Ign http://apt.puppetlabs.com trusty/main Translation-en_US Hit http://ports.ubuntu.com trusty-updates/restricted Translation-en Ign http://apt.puppetlabs.com trusty/main Translation-en Hit http://ports.ubuntu.com trusty-security/main Sources Hit http://ports.ubuntu.com trusty-security/restricted Sources Hit http://ports.ubuntu.com trusty-security/main armhf Packages Hit http://ports.ubuntu.com trusty-security/restricted armhf Packages Hit http://ports.ubuntu.com trusty-security/main Translation-en Hit http://ports.ubuntu.com trusty-security/restricted Translation-en Ign http://ports.ubuntu.com trusty/main Translation-en_US Ign http://ports.ubuntu.com trusty/restricted Translation-en_US
答案比我預想的要簡單得多:
在我輸入的終端中
軟體-屬性-gtk
在“Ubuntu Software”下,我勾選了所有來源。之後我進行了更新並嘗試再次安裝,它成功了!
感謝 Peter Horvath 的有用建議。
簡短的回答是:做一個
apt-get -f install
命令,它將下載並安裝所需的內容。
在基於 dpkg 的作業系統中安裝軟體包有 3 個步驟:
- 文件副本之前的一些腳本被呼叫
- 這些文件是從安裝包中提取的,並複製到您的根文件系統中
- 之後的一些腳本將被再次呼叫。
一個 debian 包實際上是一個標準化的集合: 1. 安裝腳本 2. 關於其依賴關係的資訊 3. 包含所有文件的實際 tar.xz 存檔。
軟體包的文件已經復製到您的文件系統,但它們的配置沒有。所以你的程序可能無法執行,但是(1)和(2)已經發生了!
這可以讓您查看是否發出
dpkg -l
命令(您可能會得到一個很長的列表,也許這dpkg -l|more
是一個更好的主意)。您的軟體包已經安裝,但處於“損壞”狀態。這可以通過apt-get -f install
命令修復。這個命令收集可用的依賴資訊——在你的包中,在你安裝的 .dpkg 儲存庫中——並找到修復一切的方法。它的主要目標是按照需要的順序查找、下載和安裝失去的包。但如果不可能,它甚至會解除安裝東西。它會告訴你,他想做什麼。如果它可以執行(並且在大多數情況下:它可以),最終您將獲得一個工作系統,一切正常。
擴展#1:您的錯誤消息顯示,此puppet包依賴於另一個名為puppet-common 的包。這個包可能不在你的預設儲存庫中,但可能在你的 puppet 包 url 旁邊。這就是原因,為什麼 apt 無法找到並將其安裝到您的系統中。但修復也很簡單:下載所需的 puppet-common 包,並安裝它。
*擴展#2:*我已經閱讀了那裡的說明,我幾乎可以肯定,你不知何故錯過了第一步。在您的
/etc/apt/sources.list
文件中,您應該找到 puppetlabs 儲存庫 url,它在那裡嗎?如果沒有,請再次執行第 1 步(將 puppetlabs 儲存庫導入您的 apt)。如果有問題,請將您的問題複製sources.list
到您的問題中,我會更進一步。