У меня есть набор инструментов (nagios, munin, puppet и т. Д.), Которые устанавливаются на все мои серверы. Я в процессе создания локального репозитория yum. Я знаю, что большинство людей просто сбрасывают все rpms в одну папку (с разбивкой по правильному пути), а затем запускают createrepo внутри каталога. Однако что произойдет, если вам придется обновить rpms?
Я спрашиваю, потому что собирался перекинуть каждую программу в отдельную папку.
Пример первый, поместите все пакеты в одну папку (custom_software)
/admin/software/custom_software/5.4/i386
/admin/software/custom_software/5.4/x86_64
/admin/software/custom_software/4.6/i386
/admin/software/custom_software/4.6/x86_64
О чем я думаю ...
/admin/software/custom_software/nagios/5.4/i386
/admin/software/custom_software/nagios/5.4/x86_64
/admin/software/custom_software/nagios/4.6/i386
/admin/software/custom_software/nagios/4.6/x86_64
/admin/software/custom_software/puppet/5.4/i386
/admin/software/custom_software/puppet/5.4/x86_64
/admin/software/custom_software/puppet/4.6/i386
/admin/software/custom_software/puppet/4.6/x86_64
Таким образом, если мне нужно было обновить марионетку до последней версии, я могу сохранить управление файлами соответственно. Я бы не знал, какие RPM какому программному обеспечению принадлежат, если бы я поместил их в одну большую папку. Имеет смысл?
Я думаю, что их все в одну папку подойдут. Когда у вас есть новая версия пакета, добавьте ее туда, а затем используйте "repomanage" из пакета yum-utils, чтобы вырезать старые версии.
Я считаю, что вам нужен отдельный репозиторий с данными, сгенерированными createrepo
для каждого отдельного выпуска, который вы поддерживаете. Это значит, что у вас есть каталог, о котором yum знает через ваш .repo файл. Ваш первый предложенный метод позволит вам это.
Используя ваш второй метод, вам придется создавать данные репозитория для каждого пакета, который вы поддерживаете, что кажется кошмаром, поскольку вам нужно иметь данные репозитория для каждого пакета.
Кроме того, я бы не стал строить внутри вашего репозитория (это единственная причина, по которой я могу придумать, чтобы разделить его с помощью программного обеспечения). Настройте среду сборки с помощью rpmdev-setuptree
(доступно в rpmdevtools
package), соберите rpms и скопируйте / переместите их из структуры сборки в структуру вашего репозитория (/<root_repo>/<release>/<arch>/<RPMS/SRPMS>
), затем сгенерируйте данные вашего репозитория через createrepo
(или createrepo --update .
) в каталоге выпуска (5.4 / 4.6).
Используйте сочетание обоих: создавайте репозитории разных типов и добавляйте в них соответствующие rpms.
Для каждого репо мы используем «промежуточный» -вариант, который содержит самые новые обороты. Если они хорошо протестированы на тестовых машинах, эти обороты перейдут в живые репозитории.
Промежуточные обороты могут быть автоматизированы.
У меня все в одном каталоге. Когда выходит обновление, я перемещаю RPM в каталог и удаляю старый. Тогда я бегу createrepo -v --update /PATH/TO/REPO
.