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

Apt pin и self-hosted apt repo

У нас есть собственный репозиторий apt / deb с несколькими пакетами, версию которых мы хотим контролировать. Что особенно важно, это включает марионетку, которая может быть чувствительна к разным версиям.

Я хочу, чтобы наши рабочие столы получали марионетку только из нашего репозитория, но также чтобы люди могли добавлять свои собственные PPA, включать резервные копии и т. Д. Текущая проблема, с которой мы сталкиваемся, - это резервные копии на Ubuntu Lucid. Некоторые важные строки из /etc/apt/sources.list:

deb http://gb.archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb http://gb.archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://gb.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse

deb http://deb.example.org/apt/ubuntu/lucid/ binary/

И в /etc/apt/preferences.d/puppet:

Package: puppet puppet-common
Pin: release a=binary
Pin-Priority: 800

Package: puppet puppet-common
Pin: release a=lucid-backports
Pin-Priority: -10

В настоящее время политика гласит:

$ sudo apt-cache policy puppet
puppet:
  Installed: (none)
  Candidate: (none)
  Package pin: 2.7.1-1ubuntu3.6~lucid1
  Version table:
     2.7.1-1ubuntu3.6~lucid1 -10
        500 http://gb.archive.ubuntu.com/ubuntu/ lucid-backports/main Packages
        100 /var/lib/dpkg/status
     2.6.14-1puppetlabs1 -10
        500 http://deb.example.org/apt/ubuntu/lucid/ binary/ Packages
     0.25.4-2ubuntu6.8 -10
        500 http://gb.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
     0.25.4-2ubuntu6 -10
        500 http://gb.archive.ubuntu.com/ubuntu/ lucid/main Packages

Если я использую n= вместо того a= тогда я получаю Package pin: (not found)

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

редактировать

Я потратил больше времени на чтение страница руководства apt / preferences и нашел origin ключевое слово. Итак, я пробовал:

Explanation: get puppet from our server
Explanation: priority over 1000 means downgrade if necessary
Package: puppet puppet-common
Pin: origin "deb.example.org"
Pin-Priority: 1001

Я удалил линию бэкпортов. На странице руководства сказано, что приоритет выше 1000 приведет к понижению версии. Но пока ничего не установлено. Я все еще получаю Package pin: (not found) и Candidate: (not found) при этом вы все еще получаете полную таблицу версий выше. Я не понимаю, почему мое происхождение не меняет приоритет deb.example.org.

Этот ответ, очевидно, будет зависеть от того, как вы упаковываете и распространяете пакеты, такие как марионетка, в вашем собственном частном репо, но альтернативный вариант, который следует рассмотреть, - это создать версии для конкретной компании с префиксом имени, чтобы избежать конфликтов с «основными» репозиториями, такими как backports .

Поэтому вместо марионетки используйте abc-puppet, где abc - это сокращение для вашей компании.