Вы можете создавать собственные репозитории и использовать их для обновления и/или установки собственных программ. Для этого необходимо создать структуру каталогов, подобную описанной выше. Вы можете выбирать из следующих компонентов (перечисляются по дереву выше):
- i586
архитектура, под которую собраны пакет (совпадает с таковой в имени бинарных RPM-пакетов)
- Mandrake
название подсистемы. Этот уровень в дереве может отсутствовать (то есть, каталоги RPMS и base могут идти сразу следом за архитектурой)
- RPMS
каталог, в котором размещены бинарные пакеты
- SRPMS
каталог, в котором размещены пакеты с исходными текстами программ
- RPMS.sisyphus
ссылка на каталог RPMS. При этом sisyphus заменяется на собственное название репозитория, например, local
- base
служебный каталог, в котором размещается база данных APT
Следующий шаг в создании своего репозитория заключается в помещении бинарных пакетов в каталог RPMS, а пакетов с исходными текстами— в каталог SRPMS и в генерации служебной информации для APT при помощи команды genbasedir; ее формат:
genbasedir [опции] {название подсистемы} {репозиторий 1} [репозиторий 2...]
Из опций, список которых можно увидеть при запуске genbasedir без параметров, наиболее важной является опция --topdir, позволяющая указать путь к репозиторию. Все остальные параметры задаются относительно этого пути. Выглядит это следующим образом. Допустим, что наше дерево каталогов выглядит так:
/opt/repository/ |-- SRPMS |-- SRPMS.security |-- i386 | |-- MyDistro | | |-- RPMS | | |-- RPMS.local -> RPMS | | |-- RPMS.security | | |-- SRPMS.local -> ../../SRPMS | | |-- SRPMS.security -> ../../SRPMS.security | | |-- base
Тогда строка запуска genbasedir будет выглядеть так:
$ genbasedir --topdir=/opt/repository i386/MyDistro local security
Этой командой мы создадим информацию для APT в двух репозиториях— local и security. Для того, чтобы воспользоваться этой информацией, необходимо прописать доступ к репозиториям в /etc/apt/sources.list:
rpm file:/opt/repository i386/MyDistro local rpm-src file:/opt/repository i386/MyDistro local rpm file:/opt/repository i386/MyDistro security rpm-src file:/opt/repository i386/MyDistro security
Репозиторий MyDistro.security, хранящий пакеты с исправлениями ошибок в системе безопасности, имеет смысл подписывать PGP-ключом, чтобы при установке пакета можно было проверить аутентичность репозитория и хранящихся в нем пакетов. Для этого необходимо создать соответствующий PGP-ключ, используя программу GnuPG (gpg) и запомнить его отпечаток (fingerprint) на клиентских машинах в файле /etc/apt/vendors.list в формате:
simple-key "краткое название ключа" { Fingerprint "отпечаток ключа"; Name "Полное название ключа"; }
Примером может служить ключ службы безопасности , которым подписаны пакеты репозитория и обновления безопасности для различных дистрибутивов ALTLinux:
simple-key "alt" { Fingerprint "BB1DD157A9722953847C5DB25B433A0EEAC91CA0"; Name "ALT Security Team <security@altlinux.ru>"; }
Для того, чтобы APT проверял аутентичность подписи, необходимо указать, что соответствующий репозиторий подписан PGP-ключом в /etc/apt/sources.list:
rpm [alt] file:/opt/repository i386/MyDistro security rpm-src [alt] file:/opt/repository i386/MyDistro security
Необходимо также сгенерировать информацию для APT в репозитории с указанием опции --sign команды genbasedir. Дополнительно, можно указать идентификатор ключа, если он отличается от ключа по умолчанию, используя опцию --uid=идентификатор. Значением этой опции является идентификатор ключа в том виде, как он передается программе GnuPG в опции --default-key:
$ genbasedir --topdir=/opt/repository --sign \ --uid='ALT Security Team' i386/MyDistro security
Операцию создания служебной информации для APT необходимо производить каждый раз, когда в репозиторий вносятся изменения.