web-dev-qa-db-ja.com

Puppet:Debian wheezy-backportsからgitパッケージをインストールする方法は?

私は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リポジトリから特定のパッケージを取得させる方法をアドバイスしてください。

3
nn4l

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

4
Craig Watson