我正在使用 Apt 模組(https://forge.puppetlabs.com/puppetlabs/apt)並新增了 Debian wheezy 向後移植儲存庫的條目:
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 中可用但預設儲存庫中不可用的軟體包,因此我認為配置本身是正確的。使用向後移植手動安裝apt-get install git -t wheezy-backports
也有效。
但是如何強制 Puppet 從 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 安裝時需要手動指定儲存庫,因為向後移植的套件的固定優先權高於預設套件。
按照這個伺服器故障答案,您將需要固定整個儲存庫或單一套件才能使用向後移植。
借助 Puppetlabs apt 模組,您可以使用該類別來執行此apt::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