私はAptモジュール( https://forge.puppetlabs.com/puppetlabs/apt )を使用しており、Debianwheezyバックポートリポジトリのエントリを追加しました。
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からパッケージを取得させるにはどうすればよいですか?具体的には、wheezyバックポートにあるgit-1.9.1-1をインストールしたいのですが
package { "git": ensure => "1:1.9.1-1~bpo70+2", }
失敗します。
package { "git": ensure => "latest", }
デフォルトのリポジトリから最新バージョンのみをインストールし、新しいバックポートバージョンはインストールしません。
Puppetにwheezy-backportsリポジトリから特定のパッケージを取得させる方法をアドバイスしてください。
Debianバックポートドキュメント から、CLI経由でインストールする場合は、リポジトリを手動で指定する必要があります。これは、バックポートされたパッケージがデフォルトパッケージよりも高い優先度で固定されているためです。
このServerFaultの回答 に従って、バックポートを使用するには、リポジトリ全体または個々のパッケージのいずれかを固定する必要があります。
Puppetlabs aptモジュールでは、apt::backports
クラスを使用してこれを行うことができます。これにより、バックポートリポジトリが追加され、ピンファイルが削除されます。
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