私は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 では利用できるが、デフォルトのリポジトリでは利用できないパッケージを正常にインストールできるので、設定自体は正しいと思います。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
、これにより、バックポート リポジトリが追加され、ピン ファイルがドロップされます。
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