Ubuntu

由於未滿足的依賴關係,無法安裝 puppet

  • October 13, 2014

我正在嘗試在新的 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 個步驟:

  1. 文件副本之前的一些腳本被呼叫
  2. 這些文件是從安裝包中提取的,並複製到您的根文件系統中
  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到您的問題中,我會更進一步。

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