15.4.1. Учимся создавать пакеты
Создание качественного пакета Debian — не всегда простая задача, и чтобы стать сопровождающим пакета, нужно потратить некоторое время на обучение, включающее как теорию, так и практику. Это не просто сборка и установка программного обеспечения; большая часть сложностей требует понимания проблем и конфликтов, а также прочих взаимоотношений с мириадом других пакетов.
Пакет Debian должен подчиняться чётким правилам, сведённым в политику Debian, и каждый сопровождающий пакета должен знать их. Не требуется вызубрить их наизусть, но нужно знать, что они существуют и обращаться к ним всякий раз, сталкиваясь с нетривиальным выбором. Каждый сопровождающий Debian совершал ошибки, не зная о правиле, однако это не особо страшно если ошибка исправлена после того, как пользователь отправил отчёт о ней, что, как правило, происходит довольно быстро, благодаря продвинутым пользователям.
Debian — это не просто набор отдельных пакетов. Работа каждого по пакетированию является частью коллективного проекта; быть разработчиком Debian — значит знать каким образом проект Debian работает как единое целое. Каждому разработчику рано или поздно придётся взаимодействовать с другими. В cправочнике разработчика Debian (в пакете
developers-reference) сведена информация, которую нужно знать каждому разработчику для успешного взаимодействия с различными командами в рамках проекта и наиболее эффективного использования имеющихся ресурсов. В этом документе также перечисляется ряд обязанностей разработчика, которые должны выполняться.
Множество инструментов помогает сопровождающим пакетов в их работе. В этом раздел они описываются вкратце, без подробностей, так как все они сопровождаются исчерпывающей документацией.
15.4.1.3.1. Программа lintian
Этот инструмент является одним из самых важных: он осуществляет проверку пакета Debian. Он включает большое количество тестов, созданных на основе политики Debian, и автоматически выявляет огромное число возможных ошибок, которые потом можно исправить до выпуска пакетов.
Этот инструмент является лишь вспомогательным, и иногда ошибается (например из-за того, что политики Debian со временем меняются, lintian
иногда устаревает). Это тоже еще не все: отсутствие каких-либо ошибок, получаемых от Lintian, не следует интерпретировать как доказательство идеальности пакета; большее, на что он способен, это помочь избежать наиболее распространенных ошибок.
15.4.1.3.2. Программа piuparts
Это другой важный инструмент: он автоматизирует установку, обновление, удаление и полное удаление пакета (в изолированном окружении) и проверяет, что ни одна из этих операций не ведёт к ошибке. Он может помочь в обнаружении недостающих зависимостей, а также определяет, когда файлы по ошибке остаются в системе после полного удаления пакета.
Пакет devscripts содержит множество программ, оказывающих помощь в широком круге задач разработчика Debian:
debuild
позволяет создавать пакет (с помощью dpkg-buildpackage
) и после этого запускать lintian
для проверки его соответствия с политикой Debian.
debclean
очищает пакет исходных текстов после создания двоичного пакета.
dch
позволяет быстро и легко редактировать файл debian/changelog
из пакета исходного кода.
uscan
проверяет, была ли выпущена новая версия программного обеспечения основными авторами; для этого требуется наличие файла debian/watch
с описанием размещения таких выпусков.
debi
позволяет устанавливать (с помощью dpkg -i
) только что созданный пакет Debian без необходимости вводить его полное имя и путь.
Аналогичным образом, debc
позволяет сканировать содержимое недавно созданного пакета (с помощью dpkg -c
) без необходимости вводить его полное имя и путь.
bts
контролирует систему отслеживания ошибок из командной строки; эта программа автоматически генерирует соответствующие письма.
debrelease
загружает недавно созданный пакет на удалённый сервер без необходимости ввода полного имени и пути соответствующего файла .changes
.
debsign
подписывает файлы *.dsc
и *.changes
.
uupdate
автоматизирует создание новой редакции пакета, как только новая версия будет выпущена разработчиками программы.
15.4.1.3.4. debhelper и dh-make
Debhelper представляет собой набор сценариев, облегчающих создание пакетов, соответствующих политике; эти сценарии вызываются из debian/rules
. Debhelper получил широкое распространение в Debian, о чем свидетельствует тот факт, что его использует большинство официальных пакетов Debian. Все команды, входящие в него, начинаются с префикса dh_
.
Сценарий dh_make
(из пакета dh-make) создает файлы, необходимые для создания пакета Debian в каталоге, изначально содержащем исходный код программы. Как можно догадаться из названия программы, сформированные файлы по умолчанию используют debhelper.
15.4.1.3.5. dupload
и dput
Команды dupload
и dput
позволяют загружать пакет Debian на (возможно удалённый) сервер. Это позволяет разработчикам публиковать свой пакет на основном сервере Debian (ftp-master.debian.org
), чтобы он мог быть интегрирован в архив и распространён при помощи зеркал. Эти команды принимают файл *.changes
в качестве параметра и на основании его содержимого находят остальные сопутствующие файлы.
Принятие в ряды разработчиков Debian — не простой административный вопрос. Процесс состоит из нескольких этапов и является в не меньшей степени процессом посвящения, нежели отбора. Так или иначе, он формализован и хорошо документирован, поэтому любой может отслеживать их продвижение на веб-сайте, посвящённом новым участникам.
15.4.2.1. Предварительные требования
Все кандидаты должны иметь, как минимум, практическое знание английского языка. Это необходимо на всех уровнях: само собой, для начальной связи с экзаменатором, и позднее, так как английский язык является предпочтительным языком для большей части документации; кроме того, пользователи пакетов будут общаться на английском языке при отправке сообщений об ошибках, и будут ожидать ответов на английском языке.
Другое требование касается мотивации. Пытаться стать разработчиком Debian имеет смысл, только если кандидат знает, что его интерес к Debian не угаснет в течение многих месяцев. Сам процесс принятия может длиться несколько месяцев, и Debian нуждается в разработчиках на долгосрочный период; каждый пакет требует постоянного обслуживания, а не только начальной загрузки.
Первый (реальный) шаг состоит в том, чтобы найти спонсора или защитника; то есть официального разработчика, готового заявить о том, что он считает, что принятие X было бы полезно для Debian. Обычно это предполагает, что кандидат уже проявил активность в рамках сообщества, и что его работа была оценена. Если кандидат является застенчивым и его работа не афишировалась публично, он может попытаться убедить разработчика Debian выступить за него, продемонстрировав свою работу приватно.
В то же время кандидат должен создать пару ключей RSA — открытый и секретный с помощью GnuPG, которая должна быть подписана не менее чем двумя официальными разработчиками Debian. Подпись удостоверяет имя владельца ключа. По сути, во время встречи для подписывания ключей каждый участник должен показать удостоверение личности (обычно ID-карту или паспорт) вместе с идентификационными данными своего ключа. Этот шаг подтверждает связь между человеком и ключами. Таким образом, для подписи необходима встреча в реальной жизни. Если вы ещё не встречали ни одного из разработчиков Debian на публичной конференции по свободному программному обеспечению, вы можете поискать разработчиков, живущих по соседству, используя список на следующей веб-странице в качестве отправной точки.
После того, как регистрация на nm.debian.org
была подтверждена защитником, к кандидату приставляется Менеджер заявлений. Он проведёт процесс через многочисленные требующиеся шаги и проверки.
Первая проверка — идентификация личности. Если у вас уже есть ключ, подписанный двумя разработчиками Debian, этот шаг будет легким, в противном случае менеджер заявлений попытается помочь вам в поисках ближайших разработчиков Debian для организации встречи и подписания ключа.
15.4.2.3. Соглашение с принципами
Эти административные формальности проистекают из философских соображений. Смысл в том, чтобы убедиться, что кандидат понимает и принимает социальный контракт и принципы, лежащие в основе Свободного ПО. Присоединение к Debian возможно, только если он разделяет ценности, объединяющие текущих разработчиков, как изложено в основополагающих текстах (и обобщено в
Глава 1, Проект Debian).
Кроме того, каждый кандидат, желающий присоединиться к рейтингу Debian, должен быть осведомлен о деятельности проекта и о том, как надлежит взаимодействовать для решения проблем, с которыми он, несомненно, со временем столкнётся. Вся эта информация, как правило, описана в руководствах, ориентированных на новых сопровождающих, а также в справочнике разработчика Debian. Внимательного чтения этого документа должно быть достаточно для ответа на вопросы экзаменатора. Если ответы неудовлетворительны, кандидат будет проинформирован. В таком случае ему придется читать соответствующую документацию (ещё раз), прежде чем повторить попытку. В случаях, когда существующая документация не содержит подходящего ответа на вопрос, кандидат, как правило, может получить ответ при помощи некоторого практического опыта работы в Debian или, возможно, путем обсуждения с другими разработчиками Debian. Этот механизм гарантирует, что кандидаты тем или иным образом принимают участие в Debian до того, как стать его полноправным участником. Это продуманная политика,направленная на то, чтобы кандидаты, в конечном итоге присоединившиеся к проекту, встроились в него как очередной кусочек бесконечно расширяющегося пазла.
Этот этап известен как Философия & Процедуры (на английском языке — P&P для краткости) на жаргоне разработчиков, участвующих в процессе принятия нового участника.
15.4.2.4. Проверка навыков
Каждое заявление на приём в официальные разработчики Debian должно быть обосновано. Чтобы стать участником проекта, нужно показать, что этот статус легитимен, и что он облегчает работу кандидата в оказании помощи Debian. Наиболее распространённое подтверждение легитимности статуса состоит в том, что статус разработчика Debian облегчает сопровождение пакета Debian, но оно не единственное. Некоторые разработчики присоединяются к проекту для того, чтобы внести свой вклад в перенос на определенную архитектуру, другие же хотят улучшить документацию и так далее.
На этом этапе кандидату предоставляется возможность заявить, что он намерен делать в рамках проекта Debian, и показать, что он уже сделал в этом направлении. Debian — прагматичный проект, и недостаточно просто сказать что-то, если слова расходятся с делом. В общем случае, когда желаемая роль в проекте связана с сопровождением пакета, первая версия будущего пакета должна пройти техническую проверку и быть загружена на серверы Debian спонсором из числа существующих разработчиков Debian.
В заключение эксперт проверяет технические навыки (пакетирования) кандидата с помощью подробного опросного листа. Неправильные ответы не допускаются, однако срок подачи ответов не ограничен. Вся документация доступна, и допускается несколько попыток, если первые ответы были неудовлетворительными. Этот этап направлен не на дискриминацию, а на проверку наличия хотя бы толики знаний, типичных для новых участников.
Этот этап известен как Задачи & Навыки на жаргоне экзаменаторов (на английском языке — T&S для краткости).
15.4.2.5. Окончательное утверждение
На самом последнем этапе весь процесс рассматривается DAM (Debian Account Manager — менеджером учётных записей Debian). DAM рассматривает всю информацию о кандидате, собранную экзаменатором, и принимает решение, создавать ли учётную запись на серверах Debian. В случаях, когда необходима дополнительная информация, создание учётной записи может быть отложено. Отказы весьма редки, если экзаменатор добросовестно соблюдает процесс, но иногда они случаются. Они никогда не бывают постоянными, и кандидат волен попробовать ещё раз позднее.
Решение менеджера учётных записей является окончательным, (почти) без права на обжалование, что объясняет, почему люди находящиеся на этой позиции, часто критиковались в прошлом.