第3章 Prerequisites

目次

3.1. People around Debian
3.2. How to contribute
3.3. Debianにおける社会ダイナミクス
3.4. Technical reminders
3.5. Debian documentation
3.6. Help resources
3.7. Archive situation
3.8. Contribution approaches
3.9. Novice contributor and maintainer

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

Debian 界隈では異なる役割で色々なタイプの人が交流しています:

  • upstream author (アップストリームの作者): 元のプログラムを作った人です。
  • upstream maintainer (アップストリームのメンテナー): 現在プログラムをメンテナンスしている人です。
  • maintainer (メンテナー): プログラムの Debian パッケージを作成している人です。
  • sponsor (スポンサー): メンテナーのパッケージを、(内容をチェックした後で)公式 Debian パッケージアーカイブにアップロードするのを手伝う人です。
  • mentor (指導役): 新米メンテナーをパッケージを作成等で手助けする人です。
  • Debian Developer (Debian デベロッパー) (DD): 公式 Debian パッケージアーカイブへの全面的アップロード権限を持っているDebian プロジェクトのメンバーです。
  • Debian Maintainer (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 "`「Contribution approaches」」`").

Please refer to the following to learn how to contribute to Debian:

Please understand Debian’s social dynamics to prepare yourself for interactions with Debian:

  • 我々は全員ボランティアです。

    • You can’t impose tasks on others.
    • 自発的に行動すべきです。
  • 友好的な協力が推進力です。

    • あなたの寄与が他者に過大な負荷をかけることがあってはいけません。
    • あなたの寄与は他人に評価されて初めて価値があります。
  • Debian は教師から自動的に注意を払ってもらう学校ではありません。

    • 多様な案件を独学できる能力を持つべきです。
    • 他ボランティアに注意を払ってもらうことは貴重なリソースです。
  • Debian は常に改良されています。

    • あなたには高品質パッケージを作成することが期待されています。
    • あなたは変化に適応していくべきです。

Since we focus only on the technical aspects of the packaging in the rest of this guide, please refer to the following to understand the social dynamics of Debian:

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

[注記]注記

Debugging of software tends to consume more time than writing the initial working software.

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 sbuild setup」.
  • Basic interactive package development activities should use an unstable chroot as described in 「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.

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

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.

If this guide contradicts the official Debian documentation, the official Debian documentation is correct. Please file a bug report on the debmake-doc package using the reportbug command.

Here are alternative tutorial documents, which you may read along with this guide:

[ヒント]ヒント

When reading these, you may consider using the debmake command in place of the dh_make command.

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

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.

If you still have questions about the packaging, you can ask them interactively:

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.

Please realize the situation of the Debian archive.

  • Debian already has packages for most kinds of programs.
  • The number of packages already in the Debian archive is several tens of times greater than that of active maintainers.
  • Unfortunately, some packages lack an appropriate level of attention by the maintainer.

Thus, contributions to packages already in the archive are far more appreciated (and more likely to receive sponsorship for uploading) by other maintainers.

[ヒント]ヒント

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.

Here is pseudo-Python code for your contribution approaches to Debian with a program:

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)

Here:

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

The novice contributor and maintainer may wonder what to learn to start your contribution to Debian. Here are my suggestions depending on your focus:

  • Packaging

    • Basics of the POSIX shell and make.
    • Some rudimentary knowledge of Perl and Python.
  • Translation

    • Basics of how the PO based translation system works.
  • Documentation

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

The novice contributor and maintainer may wonder where to start your contribution to Debian. Here are my suggestions depending on your skills:

These activities should give you good exposure to the other Debian people to establish your credibility.

The novice maintainer should avoid packaging programs with the high security exposure:

  • setuid or setgid program
  • daemon program
  • program installed in the /sbin/ or /usr/sbin/ directories

When you gain more experience in packaging, you’ll be able to package such programs.



[4] The overwhelming number of Debian maintainers use git over other VCS systems such as hg, bzr, etc.

[5] This is not the absolute requirement. The hostile upstream may become a major resource drain for us all. The friendly upstream can be consulted to solve any problems with the program.