木偶:如何从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中可用的软件包,但不能在默认存储库中安装,因此我认为configuration本身是正确的。 使用apt-get install git -t 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", } 

将只安装默认存储库中的最新版本,但不安装更新的backport版本。

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

在Debian的backports文档中 ,当通过CLI安装时,需要手动指定存储库,因为backported软件包的优先级高于默认软件包。

根据这个ServerFault的答案 ,您将需要固定整个存储库或个别包来使用backports。

使用Puppetlabs apt模块,可以使用apt::backports类来完成此操作, 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