Создание собственного репозитория

Вы можете создавать собственные репозитории и использовать их для обновления и/или установки собственных программ. Для этого необходимо создать структуру каталогов, подобную описанной выше. Вы можете выбирать из следующих компонентов (перечисляются по дереву выше):

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 необходимо производить каждый раз, когда в репозиторий вносятся изменения.