Puppet: Debian wheezy-backports から git パッケージをインストールするにはどうすればいいですか?

Puppet: Debian wheezy-backports から git パッケージをインストールするにはどうすればいいですか?

私は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

関連情報