Puppet:如何从 Debian wheezy-backports 安装 git 包?

Puppet:如何从 Debian wheezy-backports 安装 git 包?

我正在使用 Apt 模块(https://forge.puppetlabs.com/puppetlabs/apt) 并添加了 Debian wheezy backports 存储库的条目:

apt::source { 'wheezy-backports':
    location    => 'http://ftp.de.debian.org/debian',
    release     => 'wheezy-backports',
    repos       => 'main',
    include_deb => true,
    include_src => true,
    notify      => Exec['apt-get-update'],
}

我可以成功安装 wheezy-backports 中可用但默认存储库中不可用的软件包,因此我认为配置本身是正确的。使用 backports 手动安装apt-get install git -t wheezy-backports也可以。

但是我如何强制 Puppet 从 wheezy-backports 而不是默认存储库中检索包?具体来说,我想安装 wheezy backports 中的 git-1.9.1-1,但是

package { "git": ensure => "1:1.9.1-1~bpo70+2", }

失败。

package { "git": ensure => "latest", }

将仅从默认存储库安装最新版本,而不会安装较新的反向移植版本。

请告知如何强制 Puppet 从 wheezy-backports 存储库检索特定包。

答案1

来自Debian 反向移植文档,您需要在通过 CLI 安装时手动指定存储库,因为反向移植的软件包比默认软件包具有更高的优先级。

按照这个 ServerFault 答案,您需要固定整个存储库或单个包才能使用反向移植。

使用 Puppetlabs apt 模块,您可以使用类来执行此操作apt::backports,这将添加 backports 存储库并删除 pin 文件:

class { 'apt::backports':
  location => 'http://ftp.de.debian.org/debian',
  release  => 'wheezy-backports',
  repos    => 'main',
  pin      => 500,
}

如果您不想固定整个存储库,您可以使用以下方式固定单个包apt::pin(以下是示例,您可能需要对其进行调整):

apt::pin { 'backports_git':
  packages => 'git',
  priority => 500,
  release  => 'main',
}

更多文档请参见此处:https://forge.puppetlabs.com/puppetlabs/apt#pin-a-specific-release

相关内容