由于未满足依赖关系,无法安装 Puppet

由于未满足依赖关系,无法安装 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

编辑3apt-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

答案1

简短的回答是:做一个

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 包 url 旁边。这就是 apt 无法找到并将其安装到您的系统中的原因。但修复方法也很简单:下载所需的 puppet-common 包,然后安装它。

扩展 #2:我读过那里的说明,我几乎可以肯定,你不知何故错过了第一步。在你的/etc/apt/sources.list文件中,你应该找到 puppetlabs 存储库 URL,它在那里吗?如果没有,请再次执行步骤 1(将 puppetlabs 存储库导入你的 apt)。如果有什么问题,请将你的复制sources.list到你的问题中,我会进一步说明。

答案2

答案比我想象的要简单得多:

在终端中我输入

软件属性-gtk

在“Ubuntu 软件”下,我勾选了所有来源。之后我进行了更新并尝试再次安装,成功了!

感谢 Peter Horvath 提出的有用建议。

相关内容