我正在使用 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