Глава 3. Необходимые предварительные требования

# Глава 3. Необходимые предварительные требования

Here are the prerequisites you need to understand before getting involved with Debian.

## 3.1. Люди вокруг Debian

Существует несколько типов людей, взаимодействующих с Debian в рамках разный ролей:

- Автор основной ветки разработки: тот, кто создал исходную программу.
- Сопровождающий основной ветки разработки: тот, кто в настоящее время сопровождает программу.
- Сопровождающий: тот, кто создаёт пакет Debian с программой.
- Поручитель: тот, кто помогает сопровождающим загружать пакеты в официальный архив пакетов Debian (после проверки содержимого пакетов).
- Ментор: тот, кто помогает начинающим сопровождающим создавать пакеты и проч.
- разработчик Debian (DD): член проекта Debian с полными правами на загрузку в официальный архив пакетов Debian.
- сопровождающий Debian (DM): тот, кто имеет ограниченные права на загрузку в официальный архив пакетов Debian.

Please note that you can’t become an official Debian Developer (DD) overnight, as it requires more than just technical skills. Don’t be discouraged by this. If your work is useful to others, you can still upload your package either as a maintainer through a sponsor or as a Debian Maintainer.

Please note that you don’t need to create new packages to become an official Debian Developer. Contributing to existing packages can also provide a path to becoming an official Debian Developer. There are many packages waiting for good maintainers (see «"`Раздел 3.8, «Подходы к участию»»`").

## 3.2. Как принять участие

Чтобы узнать, как принять участие в Debian, обратите внимание не следующее:

- «Как вы можете помочь Debian?» (официальный источник)
- «The Debian GNU/Linux FAQ, Chapter 13 - Contributing to the Debian Project» (semi-official)
- «Debian Wiki, HelpDebian» (дополнительный источник)
- «Сайт новых участников Debian» (официальный источник)
- «ЧаВО для менторов Debian» (дополнительный источник)

## 3.3. Социальная динамика Debian

Для подготовки к взаимодействию с Debian следует понять социальную динамику Debian, которая состоит в следующем:

- We are all volunteers.

  - You can’t impose tasks on others.
  - You should be self-motivated to do things.

- Движущей силой является дружеское сотрудничество.

  - Ваше участие не должно чрезмерно досаждать остальным.
  - Ваш вклад ценен только в том случае, если остальные вам за него признательны.

- Debian is not a school where you get automatic attention from teachers.

  - You should be able to learn many things independently.
  - Attention from other volunteers is a scarce resource.

- Debian постоянно улучшается.

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

Поскольку в оставшейся части настоящего руководства мы концентрируемся исключительно на технических аспектах создания пакетов, постольку чтобы понять социальную динамику Debian, рекомендуем обратиться к следующей документации:

- «Debian: 17 years of Free Software, "do-ocracy", and democracy» (Introductory slides by the ex-DPL)

## 3.4. Техническая памятка

Here are some technical reminders to help other maintainers work on your package easily and effectively, maximizing the output of Debian as a whole.

- Упростите отладку вашего пакета.

  - Делайте ваш пакет простым.
  - Не усложняйте ваш пакет.

- Хорошо документируйте ваш пакет.

  - Используйте читаемый стиль для исходного кода.
  - Оставляйте в коде комментарии.
  - Форматируйте свой код везде одинаковым образом.
  - Сопровождайте git-репозиторий [4] пакета.

| Примечание
Отладка ПО чаще требует большего количества времени, чем написание изначально работающего ПО.

It is unwise to run your base system under the unstable suite, even for development purposes.

- Creation and verification of binary deb packages should use a minimal unstable chroot as described in «Раздел 4.7, «sbuild setup»».
- Basic interactive package development activities should use an unstable chroot as described in «Раздел 4.8, «Persistent chroot setup»».

| Примечание
Advanced package development activities, such as testing full Desktop systems, network daemons, and system installer packages, should use the unstable suite running under «virtualization».

## 3.5. Документация Debian

Please make yourself ready to read the pertinent part of the latest Debian documentation to generate perfect Debian packages:

- «Debian Policy Manual»

  - The official «must follow» rules (https://www.debian.org/doc/devel-manuals#policy)

- «Debian Developer’s Reference»

  - The official «best practice» document (https://www.debian.org/doc/devel-manuals#devref)

- «Guide for Debian Maintainers»— this guide

  - A «tutorial reference» document (https://www.debian.org/doc/devel-manuals#debmake-doc)

All these documents are published on https://www.debian.org using the unstable suite versions of corresponding Debian packages. If you wish to have local access to all these documents from your base system, please consider using techniques such as «apt-pinning» and «chroot».

Если данное руководство противоречит официальной документации Debian, то верной является последняя. В таком случае отправьте сообщение об ошибке в пакете debmake-doc с помощью команды reportbug.

Также существует следующая альтернативная вводная документация, которую вы можете прочитать вместе с настоящим руководством:

- «Debian Packaging Tutorial»

  - https://www.debian.org/doc/devel-manuals#packaging-tutorial
  - https://packages.qa.debian.org/p/packaging-tutorial.html

- «Ubuntu Packaging Guide» (Ubuntu is Debian based.)

  - http://packaging.ubuntu.com/html/

- «Debian New Maintainers' Guide» (predecessor of this tutorial, deprecated)

  - https://www.debian.org/doc/devel-manuals#maint-guide
  - https://packages.qa.debian.org/m/maint-guide.html

| Подсказка
When reading these, you may consider using the debmake command in place of the dh_make command.

## 3.6. Справочные ресурсы

Before deciding to ask your question in a public forum, please do your part by reading the relevant documentation:

- Информацию о пакете, доступную с помощью команд aptitude, apt-cache и dpkg.
- Файлы в каталоге /usr/share/doc/пакет для всех релевантных пакетов.
- Содержимое man команда для всех релевантных команд.
- Содержимое info команда для всех релевантных команд.
- Содержимое «архива списка рассылки debian-mentors@lists.debian.org».
- Содержимое «архива списка рассылки debian-devel@lists.debian.org».

You can find your desired information effectively by using a well-formed search string such as "keyword site:lists.debian.org" to limit the search domain of the web search engine.

Creating a small test package is a good way to learn the details of packaging. Inspecting existing well-maintained packages is the best way to learn how other people make packages.

Если у вас всё ещё остались вопросы по поводу создания пакетов, вы можете задать их в следующих списках рассылки:

- debian-mentors@lists.debian.org mailing list. (This mailing list is for the novice.)
- debian-devel@lists.debian.org mailing list. (This mailing list is for the expert.)
- IRC such as #debian-mentors.
- Teams focusing on a specific set of packages. (Full list at https://wiki.debian.org/Teams)

- Списки рассылки, в которых принято общаться на отличных от английского языках.

  - «debian-devel-{french,italian,portuguese,spanish}@lists.debian.org»
  - «debian-chinese-gb@lists.debian.org» (This mailing list is for general (Simplified) Chinese discussion.)
  - «debian-devel@debian.or.jp»

More experienced Debian developers will gladly help you if you ask properly after making the required efforts.

| Внимание
Debian development is a moving target. Some information found on the web may be outdated, incorrect, or non-applicable. Please use such information carefully.

## 3.7. Ситуация с архивом

Пожалуйста, поймите ситуацию с архивом Debian.

- В Debian уже имеются пакеты для большинства видов программ.
- Число пакетов в архиве Debian уже в несколько раз превышает число активных сопровождающих.
- К сожалению, некоторые пакеты нуждаются в должном внимании сопровождающих.

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

| Подсказка
The wnpp-alert command from the devscripts package can check for installed packages that are up for adoption or orphaned.

| Подсказка
The how-can-i-help package can show opportunities for contributing to Debian based on packages installed locally.

## 3.8. Подходы к участию

Ниже приводится псевдокод на питоноподобном языке, описывающий в программном видевозможности вашего участия в Debian:

    if exist_in_debian(program):
      if is_team_maintained(program):
        join_team(program)
      if is_orphaned(program): # maintainer: Debian QA Group
        adopt_it(program)
      elif is_RFA(program): # Request for Adoption
        adopt_it(program)
      else:
        if need_help(program):
          contact_maintainer(program)
          triaging_bugs(program)
          preparing_QA_or_NMU_uploads(program)
        else:
          leave_it(program)
    else: # new packages
      if not is_good_program(program):
        give_up_packaging(program)
      elif not is_distributable(program):
        give_up_packaging(program)
      else: # worth packaging
        if is_ITPed_by_others(program):
          if need_help(program):
            contact_ITPer_for_collaboration(program)
          else:
            leave_it_to_ITPer(program)
        else: # really new
          if is_applicable_team(program):
            join_team(program)
          if is_DFSG(program) and is_DFSG(dependency(program)):
            file_ITP(program, area="main") # This is Debian
          elif is_DFSG(program):
            file_ITP(program, area="contrib") # This is not Debian
          else: # non-DFSG
            file_ITP(program, area="non-free") # This is not Debian
          package_it_and_close_ITP(program)

Где:

- Для функций exist_in_debian() и is_team_maintained() нужно проверить следующее:

  - команду aptitude
  - веб-страницу «пакеты Debian»
  - Debian wiki «Teams» page

- Для функций is_orphaned(), is_RFA() и is_ITPed_by_others() нужно проверить следующее:

  - вывод команды wnpp-alert
  - «пакеты требующие доработки и будущие»
  - «журналы отчётов об ошибках Debian: ошибки в псевдопакете wnpp в нестабильном выпуске»
  - «пакеты Debian, которым требуется внимание и забота»
  - «ошибки в пакете wnpp по меткам debtag»

- Для функции is_good_program() нужно проверить следующее:

  - программа должна быть полезна
  - программа не усложняет поддержку безопасности и сопровождение системы Debian
  - программа хорошо документирована, а её код понятен (то есть, не обфусцирован)
  - авторы программы согласны с созданием пакета и дружественно относятся к Debian [5]

- Для функций is_it_DFSG() и is_its_dependency_DFSG() нужно проверить следующее:

  - «Критерии Debian по определению Свободного ПО» (DFSG).

- Для функции is_it_distributable() нужно проверить следующее:

  - ПО должно иметь лицензию и лицензия должна разрешать распространение ПО.

You either need to file an ITP or adopt a package to start working on it. See the «Debian Developer’s Reference»:

- «5.1. Новые пакеты».
- «5.9. Перемещение, удаление, переименование, придание статуса осиротевшего, усыновление и повторное введение пакетов».

## 3.9. Начинающий участник и сопровождающий

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

- Создание пакетов

  - Основы командной оболочки POSIX и инструмента make.
  - Некоторое зачаточное знание Perl и Python.

- Перевод

  - Основы работы системы перевода PO.

- Документация

  - Basics of text markups (XML, ReST, Wiki, …​).

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

- Навыки работы с командной оболочкой POSIX, Perl и Python:

  - Отправляйте заплаты для программы установки Debian.
  - Send patches to the Debian packaging helper scripts such as devscripts, sbuild, schroot, etc. mentioned in this document.

- Навыки C и C++:

  - Отправляйте заплаты для пакетов, имеющих приоритеты required и important.

- Навыки работы с отличными от английского языками:

  - Отправляйте заплаты для PO-файлов программы установки Debian.
  - Отправляйте заплаты для PO-файлов пакетов, имеющих приоритеты required и important.

- Навыки написания документации:

  - Обновляйте содержание «Debian Wiki».
  - Отправляйте заплаты к существующей «документации Debian».

Эта деятельность даст вам возможность познакомиться с другими участниками Debian и улучшить вашу репутацию.

Начинающему сопровождающему следует избегать работу над пакетами, содержащими программы с высокими рисками в плане безопасности:

- программы, имеющие флаги доступа setuid или setgid
- службы
- программы, устанавливаемые в каталоги /sbin/ или /usr/sbin/

Когда вы получите больше опыта в работе над пакетами, вы сможете создавать пакеты и с такими программами.

[4] Подавляющее большинство сопровождающих Debian используют git, а не другие системы управления версиями, такие как hg, bzr и т.д.

[5] Это не является абсолютным требованием. Тем не менее, враждебные разработчики основной ветки могут стать тем, что будет опустошать ресурсы всех нас. С дружественными разработчиками можно консультироваться в решении любых проблем с программой.

Глава 2. Обзор |  | Глава 4. Настройка инструментов