Сведения о документе

Руководство начинающего мантейнера ALT Linux Team

Станислав Иевлев


У каждого пакета в Sisyphus есть один или несколько мантейнеров — это те участники ALT Linux Team, которым нужно и интересно программное обеспечение, содержащееся в пакете, которые пользуются им, следят за обновлениями и исправлениями ошибок. Этот документ предназначен в помощь тем, кто решил присоединиться к команде ALT Linux Team, т. е. стать мантейнером одного или нескольких пакетов со свободным программным обеспечением[1].

Обязанности мантейнера

Что должен делать мантейнер:

  • Следить за современностью и актуальностью поддерживаемых им пакетов. Регулярно пользоваться этим пакетом (мантейнер должен чувствовать пакет “изнутри”, без этого нарушается цикл тестирования и пакет становится неполноценным);

  • Быть в курсе разработки софта, входящего в пакет. Это, как минимум, подразумевает участие в списке рассылки типа XXX-announce. Общение с разработчиками софта, входящего в пакет, желательно, но не обязательно. Участие в разработке софта, входящего в пакет, желательно, но не обязательно. (это дает возможность иметь в дистрибутиве самую свежую, но при этом рабочую версию софта, а также повышает оперативность исправления ошибок);

  • Незамедлительно исправлять ошибки, связанные с безопасностью по первому запросу из ALT Security Team;

  • По мере возможности исправлять ошибки, связанные с некорректным функционированием программ;

  • Помогать прикрепленным к нему новым участникам;

  • По возможности активно участвовать в списках рассылок ALT.

Прием новых участников в ALT Linux Team

Если вы считаете, что какого-то пакета в Сизифе не хватает, или что какой-то пакет заслуживает большего внимания и готовы заняться этим сами — значит, настало время присоединиться к команде ALT Linux Team!

Итак, если у вас есть конкретные намерения, связанные с какими-то пакетами для Sisyphus, первым делом нужно уведомить команду о своём желании, написав письмо на адрес . Такие письма читают специальные члены команды — принимающие. В этом письме нужно написать несколько слов о том, чем вы намерены заняться в ALT Linux Team (“собрать для начала такой-то пакет, а потом, если получится, ещё пакеты из такой-то области”, “просто помочь со сборкой чего-нибудь”, “научиться собирать пакеты” и т. п.).

Помимо намерений принимающему для включения вас в команду разработчиков нужна ещё следующая информация:

  • Псевдоним (имя пользователя) участника, выбирается им самим, если ещё не принадлежит существующему участнику. Его длина должна быть по возможности минимальной и он не должен содержать цифры;

  • Создаётся новый OpenSSH ключ (RSA 2048 бит, или DSA 1024 бит). Принимающему высылается публичная часть ключа. Этот ключ будет необходим для выкладывания пакетов в incoming (точка входа в репозиторий Sisyphus);

    Note

    Ключ настоятельно рекомендуется сделать с паролем. В противном случае нет никакой гарантии в том, что никто не испортит ваш пакет, действуя от вашего имени.

    Ключ создаётся с помощью утилиты ssh-keygen, например, следующей командой:

    $ ssh-keygen -b 2048 -t rsa

    Публичная часть ключа — файл ~/.ssh/id_rsa.pub

  • Создается/модифицируется существующий GPG/PGP ключ (DSA and ElGamal, 2048 бит). В ключе должен быть uid вида псевдоним@altlinux.org. Принимающему высылается его публичная часть

    Ключ высылается в ASCII виде. Экспортирование выполняется следующей командой:

    $ gpg --export --armor [имя ключа] >[файл с экспортированным в ASCII ключом]

  • Указывается адрес, на который следует пересылать почту, адресованную на псевдоним@altlinux.org

Принимающий на основе переданной первичной информации регистрирует нового участника и высылает ему инструкции по использованию incoming, тестовое задание, возможно, дополнительную информацию.

Инструкция по использованию incoming необходима, так как incoming — это первичная точка входа в репозиторий для всех пакетов. Инструкция может видоизменяться в зависимости от используемой на данный момент технологии.

Тестовое задание носит обучающий характер, позволяет новому участнику освоиться с основными принципами работы с incoming и создания пакетов. Тестовое задание зависит от того, какой пакет хочет в дальнейшем обслуживать новый участник. Никакие пакеты нового участника не будут приниматься до тех пор, пока он не выполнит тестовое задание.

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

На первый период принимающий назначает одного из существующих мантейнеров в помощь новому участнику.

Работа с ключами

При приеме участник создает два ключа (на данный момент это OpenSSH и GPG ключи).

При утере одного из ключей, он может быть восстановлен заверением вторым. Берегите свои приватные ключи!

При утере обоих ключей участник извещает об этом принимающих. Его доступ в incoming прекращается до восстановления ключей.

Два ключа могут быть восстановлены либо посредством личной встречи с одним из принимающих, либо посылкой их письмом, заверенным ключом одного из участников ALT Linux Team. В последнем случае всю ответственность за дальнейшую безопасность репозитория несет участник, заверивший ключи.

Устройство incoming

Возможно существование иерархии incoming для Sisyphus, но основной каталог только один. Структура его четко определена и мантейнеры обязаны класть пакеты в определенные каталоги, предназначенные для этого.

Имеет смысл класть только пакеты с исходными текстами, так как пакеты всегда проходят пересборку перед тем, как попасть в основной репозиторий.

Итак, incoming подразделяется на следующие составляющие:

Sisyphus

Здесь должны появляться пакеты с исходными текстами, предназначенные для репозитория.

Daedalus

Здесь должны появляться пакеты с исходными текстами и бинарные пакеты, предназначенные для репозитория Daedalus.

updates

Сюда должны попадать обновления для текущих поддерживаемых веток и дистрибутивов ALT.

Пожалуйста, придерживайтесь этой структуры каталогов, не пытайтесь создавать своих подкаталогов. Роботы, обрабатывающие incoming, в лучшем случае не заметят файлы, которые лежат в неправильном месте.

В помощь начинающему разработчику

Возможные причины отказа в доступе к Sisyphus для пакета

Вот несколько причин, по которым пакету может быть отказано в доступе в репозиторий (более подробные сведения находятся в ALT-Packaging-HOWTO):

  • Несоответствие требованиям репозитория (см. выше);

  • Пакет не подписан GPG-ключом мантейнера;

  • В пакете недопустимые %post, %preun, %pre скрипты. Например:

    • нельзя изменять на этапе установки/удаления какие-либо системные файлы;

    • не допускается доустанавливать дополнительные программы, производить их перемещения из одного места в другое;

  • Недопустимые права на файлы (немотивированный SUID/SGID, World-writeable файлы);

  • Ложные или недопустимые зависимости пакета (Requires);

  • Ложные или недопустимые зависимости сборки (BuildReqs);

  • Полное несоответствие spec-файла требованиям ALT Linux Team (более подробно в ALT-Packaging-HOWTO). Например, использование BuildRoot, %clean, defattr(-,-,root);

  • Избыточная информация в версии пакета (например, 1.2.3pre5) может повредить корректному обновлению (1.2.3 до 1.2.3pre5, несмотря на то, что 1.2.3 — это финальная версия). Переносите все дополнительные сведения в номер сборки (например, alt0.1.pre5);

  • Необоснованное увеличение Serial. Увеличение следует производить только в случае необходимости отката по версии;

На самом деле правил и ограничений намного больше, самый надёжный способ всегда быть в курсе это использовать утилиту sisyphus_check из пакета sisyphus для проверки своих пакетов перед отправкой в incoming. Также рекомендуется использовать утилиту add_changelog из пакета rpm-utils для добавления changelog к пакету.

Примерное содержание файла .rpmmacros

Очень удобно и настоятельно рекомендуется создать в своем домашнем каталоге файл .rpmmacros. В нем вы можете определить такие параметры, как:

  • Месторасположение структуры каталогов для сборки;

  • Каким ключом подписывать пакеты;

  • Значение полей, таких, как Packager, Vendor и Distribution;

%vendor ALT Linux Team
%distribution   ALT Linux

%_topdir /home/pupkin/RPM/
%_gpg_name pupkin@altlinux.org
%packager Vasja Pupkin <pupkin@altlinux.org>
		

Типовая инструкция, высылаемая новому мантейнеру

Greetings!

Ваш account в incoming Sisyphus создан (название account'a in_xxx).
О том как им пользоваться, смотрите инструкции ниже. Также создан
forward c адреса xxx@altlinux.org на yyy@somehost.com

Вашим главным помощником будет zzz@altlinux.org (ZZZ ZZZZ) - если у Вас
возникнут какие-либо вопросы по изготовлению пакетов спрашивайте у
него.

ПРЕЖДЕ ЧЕМ ВЫ НАЧНЕТЕ ВЫКЛАДЫВАТЬ ПАКЕТЫ:

Надо пройти простенький тест. Это поможет Вам лучше освоиться с
технологией работы с incoming, избежать типичных ошибок при сборке
пакетов, с'экономить деньги на лишнем трафике. Итак, Задача:

Необходимо собрать пакет, удовлетворяющий следующим требованиям:

1. xxxxxxxxxxxxx
2. xxxxxxxxxxxxx
3. xxxxxxxxxxxxx
4. xxxxxxxxxxxxx
5. xxxxxxxxxxxxx

После того как Вы успешно сделаете этот пакет, можете выкладывать то, что
хотите.

Инструкции:

Теперь можно добавить в ~/.ssh/config:

Host incoming
    HostName devel.altlinux.org
    User in_xxx
    Protocol 2
    ForwardX11 no
    ForwardAgent no
    Compression no

incoming - это специальная среда c rsync'ом, и ssh
используется прежде всего как транспорт для rsync.

В каталог /incoming заливаются новые пакеты, собранные
разработчиками, находящимися вне офиса.

Для закачки туда-сюда файлов лучше всего использовать rsync. Например,
для upload'а в incoming можно запускать нечто вроде

rsync -vaP --stats local_path/ incoming:/incoming/Sisyphus/

Если что-то непонятно либо не получается - спрашивайте.

Тест на работоспособность:

$ ssh incoming
-in_sh: invalid arguments
Connection to devel.altlinux.org closed.

$ rsync incoming:/incoming/
drwxr-x--x        4096 2007/10/30 17:28:31 .
drwxrws--T        4096 2008/01/29 15:12:44 Daedalus
drwxrwx--T       28672 2008/01/30 02:08:16 Sisyphus
drwxr-s---        4096 2007/04/25 03:12:42 backports
drwxrws---        4096 2007/09/18 16:41:24 docs
drwxrws--T        4096 2008/01/11 12:38:59 join
drwxr-x--x        4096 2006/06/10 22:09:37 notes
drwxr-s---        4096 2007/04/25 03:05:35 updates

С наилучшими пожеланиями
GATE-KEEPER NAME
	  



[1] Чтобы стать мантейнером, совсем не обязательно (хотя и желательно) иметь квалификацию программиста. Главное — быть заинтересованным в судьбе пакета.

Сведения о документе