Назад | Перейти на главную страницу

Puppet: как установить пакет git из Debian wheezy-backports?

Я использую модуль Apt (https://forge.puppetlabs.com/puppetlabs/apt) и добавили запись для репозитория Debian wheezy backports:

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, который находится в бэкпорте Wheezy, но

package { "git": ensure => "1:1.9.1-1~bpo70+2", }

терпит неудачу.

package { "git": ensure => "latest", }

установит только последнюю версию из репозитория по умолчанию, но не более новую версию backport.

Посоветуйте, пожалуйста, как заставить Puppet получить определенный пакет из репозитория wheezy-backports.

Из Документация по резервным копиям Debian, вам необходимо вручную указать репозиторий при установке через интерфейс командной строки, поскольку пакеты с обратным переносом закрепляются с более высоким приоритетом, чем пакеты по умолчанию.

Согласно этот ответ ServerFault, вам нужно будет закрепить либо весь репозиторий, либо отдельные пакеты, чтобы использовать backports.

С помощью модуля Puppetlabs apt вы можете сделать это с помощью apt::backports class, который добавит репозиторий 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