Я настраиваю репозиторий apt для управления зависимостями для серверов, которые я создаю. Я делаю это, потому что хочу иметь возможность многократно строить один и тот же сервер снова и снова.
Инструменты конечно есть (apt-get
) для анализа работающей системы и загрузки пакетов, необходимых для удовлетворения заданного требования. Например, именно это и происходит, когда я бегу
sudo apt-get install --download-only vim
В таком случае apt-get
анализирует состояние системы и загружает пакеты, необходимые для установки vim в мою систему.
Я ищу аналогичный инструмент, который позволил бы мне загружать пакеты для добавления в мой собственный репозиторий apt. Он должен выполнять тот же тип анализа зависимостей в репозитории, что и apt-get
выполняет в моей системе и загружает только пакеты, которых еще нет в репозитории. Итак, когда я бегу apt-get install ...
в системе, которая указывает на мой репозиторий, она сможет установить пакет и все его зависимости. Существуют ли какие-либо инструменты для анализа того, какие пакеты у меня уже есть в моем репозитории, а затем для загрузки необходимых дополнительных пакетов?
У меня есть тривиальный Makefile, который я использую для этого, но вот то же самое в оболочке:
#!/bin/bash
rm -f Release* Packages* new-release
dpkg-scanpackages . /dev/null > Packages
gzip -c -9 <Packages >Packages.gz
apt-ftparchive release . > new-release
mv new-release Release
gpg -abs -o Release.gpg Release
Шаг GPG не нужен, если вы не хотите подписывать свой репозиторий, но усилия для этого минимальны (и в наши дни альтернативой является изменение конфигурации для отключения проверки подписи, поэтому вам нужно что-то сделать).
Затем вы обращаетесь к каталогу в /etc/apt/sources.list вашего клиента следующим образом:
# Local directory
deb file:///var/local/debs ./
# Via http(s)
deb http://foo.bar.com/debian ./
HTTPS может быть хорошим способом разрешить обновления с серверов по всему миру без необходимости использования VPN. Я сделал это на предыдущей работе, подкрепляя CA внутри нашего марионеточного развертывания, поэтому это было полностью автоматическим.
Как сказал @Andrea De Palo, теоретически вы можете просто использовать марионетку, а после установки основного дистрибутива просто запустить puppet resource package
в котором будут перечислены все установленные пакеты с точной версией и т. д.
После этого просто создайте модуль со всеми перечисленными пакетами. Кроме того, вы также можете использовать марионетку для настройки файлов конфигурации и т. Д.
Стоит попробовать.
Сам никогда не пользовался, не уверен, что он вам подходит. Но вас может заинтересовать http://wiki.debian.org/DebPartialMirror
Как насчет использования Кукольный автоматизировать управление пакетами?