Kapitel 3. Voraussetzungen

# Kapitel 3. Voraussetzungen

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

## 3.1. Leute bei Debian

Es nehmen verschiedene Arten von Leuten mit verschieden Rollen rund um Debian teil:

- Originalautor: die Person, die das ursprüngliche Programm erstellte.
- Originalbetreuer: Die Person, die derzeit das Programm betreut.
- Betreuer: Die Person, die das Debian-Paket des Programms erstellt.
- Sponsor: Eine Person, die den Betreuern beim Hochladen (nach Prüfen des Inhalts) des Pakets in das offizielle Debian-Paketarchiv hilft.
- Mentor: Eine Person, die neuen Betreuern beim Paketieren usw. hilft.
- Debian-Entwickler (DD): ein Mitglied des Debian-Projekts mit vollen Hochlade-Rechten in das offizielle Debian-Paketarchiv.
- Debian-Betreuer (DM): Eine Person, mit begrenzten Hochladerechten in das offizielle Debian-Paketarchiv.

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 „"`Abschnitt 3.8, „Wege, beizutragen““`").

## 3.2. Wie Sie beitragen können

Bitte lesen Sie die folgenden Dokumenten, um zu verstehen, wie Sie zu Debian beitragen können:

- „Wie können Sie Debian helfen?“ (offiziell)
- „The Debian GNU/Linux FAQ, Chapter 13 - Contributing to the Debian Project“ (semi-official)
- „Debian Wiki, HelpDebian“ (ergänzend)
- „Debian New Member site“ (offiziell)
- „Debian Mentors FAQ“ (ergänzend)

## 3.3. Soziale Dynamik von Debian

Bitte verstehen Sie die soziale Dynamik, um sich für die Wechselwirkungen mit Debian vorzubereiten:

- We are all volunteers.

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

- Freundliche Zusammenarbeit ist der Motor.

  - Ihr Beitrag sollte Andere nicht überlasten.
  - Ihr Beitrag hat nur Wert, wenn ihn andere wertschätzen.

- 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 verbessert sich ständig.

  - Es wird erwartet, dass Sie hochqualitative Pakete erstellen.
  - Sie sollten sich Änderungen anpassen.

Da in der restlichen Anleitung nur auf die technischen Aspekte der Paketierung fokusiert wird, wird auf folgendes zum Verständnis der sozialen Dynamik von Debian verwiesen:

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

## 3.4. Technische Erinnerungen

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

- Ermöglichen Sie in Ihrem Paket eine leichte Fehlersuche.

  - Halten Sie Ihr Paket einfach.
  - Machen Sie Ihr Paket nicht zu komplex.

- Halten Sie Ihr Paket gut dokumentiert.

  - Verwenden Sie einen lesbaren Code-Stil.
  - Fügen Sie in den Code Kommentare ein.
  - Formatieren Sie Code konsistent.
  - Verwalten Sie das Git-Depot [4] des Pakets.

| Anmerkung
Die Fehlersuche in Software kann mehr Zeit verbrauchen, als die eigentliche Erstellung.

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 „Abschnitt 4.7, „sbuild setup““.
- Basic interactive package development activities should use an unstable chroot as described in „Abschnitt 4.8, „Persistent chroot setup““.

| Anmerkung
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-Dokumentation

Bitte lesen Sie nach Bedarf den einschlägigen Anteil der neusten Debian-Dokumentation, um perfekte Debian-Pakete zu erstellen:

- „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“.

Falls dieser Leitfaden der offiziellen Debian-Dokumentation widerspricht, dann ist die offizielle Debian-Dokumentation korrekt. Bitte reichen Sie mittels des Befehls reportbug (auf englisch) einen Fehlerbericht gegen das Paket debmake-doc ein.

Hier sind alternative Anleitungen, die Sie zusammen mit diesem Leitfaden lesen können:

- „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

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

## 3.6. Hilfequellen

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

- Paketierinformationen, die über die Befehle aptitude, apt-cache und dpkg verfügbar sind.
- Dateien in /usr/share/doc/Paket für alle einschlägigen Pakete.
- Inhalte von man Befehl für alle einschlägigen Befehle.
- Inhalte von info Befehl für alle einschlägigen Befehle.
- Inhalte von „debian-mentors@lists.debian.org-Mailinglist-Archiv“.
- Inhalte von „debian-devel@lists.debian.org-Mailinglist-Archiv“.

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.

Falls Sie immer noch Fragen über das Paketieren haben, können Sie die Fragen direkt stellen (auf Englisch):

- 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)

- Sprachspezifische Mailinglisten

  - „debian-devel-{french,italian,portuguese,spanish}@lists.debian.org“
  - „debian-chinese-gb@lists.debian.org“ (Diese Mailingliste ist für allgemeine Diskussion auf (vereinfachtem) Chinesisch.)
  - „debian-devel@debian.or.jp“

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

| Achtung
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. Archivsituation

Bitte begreifen Sie die Situation des Debian-Archivs.

- Debian hat bereits Pakete für die meisten Programmarten.
- Die Anzahl an Paketen im Debian-Archiv ist mehrere zehnmal so groß wie die Anzahl der aktiven Betreuer.
- Bei einigen Paketen fehlt leider die entsprechende Aufmerksamkeit des Betreuers.

Daher werden Beiträge zu Paketen, die sich bereits im Archiv befinden, von anderen Betreuern weitaus mehr geschätzt (und erhalten eher Sponsoring für das Hochladen).

| Tipp
The wnpp-alert command from the devscripts package can check for installed packages that are up for adoption or orphaned.

| Tipp
The how-can-i-help package can show opportunities for contributing to Debian based on packages installed locally.

## 3.8. Wege, beizutragen

Hier ist Pseudo-Python-Code für Ihre Wege, zu Debian mit einem Programm beizutragen:

    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)

Hier:

- Für das Prüfen von exist_in_debian() und is_team_maintained();:

  - der Befehl aptitude
  - „Debian-Pakete“-Webseite
  - Debian wiki „Teams“ page

- Für das Prüfen von is_orphaned(), is_RFA() und is_ITPed_by_others():

  - Die Ausgabe des Befehls wnpp-alert.
  - „Arbeit-bedürfende und voraussichtliche Pakete“
  - „Debian-Fehlerberichtsprotokolle: Fehler im Pseudo-Paket wnpp in Unstable“
  - „Debian-Pakete, die liebgewonnen werden müssen“
  - „Durchsuchen Sie wnpp Fehlerberichte basierend auf Debtags“

- Für das Prüfen von is_good_program():

  - Das Programm sollte nützlich sein.
  - Das Programm sollte keine Sicherheits- und Wartungsbedenken in das Debian-System einbringen.
  - Das Programm sollte gut dokumentiert sein und sein Code muss verständlich (d.h. nicht verschleiert) sein.
  - Die Autoren des Programms stimmen mit der Paketierung überein und sind mit Debian einvernehmlich. [5]

- Für die Prüfung von is_it_DFSG() und is_its_dependency_DFSG():

  - „Debian Richtlinien für Freie Software“ (DFSG).

- Für die Prüfung von is_it_distributable():

  - Die Software muss eine Lizenz haben und sie sollte ihre Verbreitung erlauben.

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

- „5.1. Neue Pakete“.
- „5.9. Verschieben, Entfernen, Verwaisen, Adoptieren und Wiedereinführen von Paketen“.

## 3.9. Neue Beitragende und Betreuer

Die neuen Beitragenden und Betreuer könnten sich fragen, was sie lernen sollten, um zu Debian beizutragen. Hier sind meine Vorschläge, abhängig von Ihrem Schwerpunkt:

- Paketierung

  - Grundlagen der POSIX-Shell und Make.
  - Etwas rudimentäres Wissen von Perl und Python.

- Übersetzungen

  - Grundlagen, wie das PO-basierte Übersetzungssystem funktioniert.

- Dokumentation

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

Der neue Beitragende und Betreuer könnte sich fragen, wo er mit Beiträgen zu Debian beginnen sollte. Hier sind meine Vorschläge, abhängig von Ihren Fertigkeiten:

- POSIX-Shell-, Perl- und Python-Fertigkeiten:

  - Schicken Sie Patches zum Debian-Installer.
  - Schicken Sie Patches an Paketierhelferskripte von Debian wie Devscripts, Sbuild, Schroot usw., die in diesem Dokument erwähnt sind.

- C- und C++-Fähigkeiten:

  - Schicken Sie Patches an Pakete mit den Prioritäten required und important.

- Sprachfähigkeiten jenseits von Englisch:

  - Schicken Sie Patches zu den PO-Dateien des Debian-Installers.
  - Schicken Sie Patches an den PO-Dateien der Pakete mit den Prioritäten required und important.

- Dokumentations-Fähigkeiten

  - Aktualisieren Sie Inhalte auf „Debian-Wiki“.
  - Schicken Sie Patches an das existierende „Debian-Dokumentation“.

Diese Aktivitäten sollten Ihnen einen guten Kontakt zu den anderen Debian-Menschen verschaffen, um Ihre Glaubwürdigkeit zu begründen.

Der unerfahrene Betreuer sollte das Paketieren von Programmen mit einer hohen Sicherheitsexposition vermeiden:

- Setuid- oder Setgid-Programme
- Daemon-Programme
- Programme, die in den Verzeichnissen /sbin/ oder /usr/sbin/ installiert werden

Wenn Sie mehr Erfahrung beim Paketieren gesammelt haben, werden Sie in der Lage sein, solche Programme zu paketieren.

[4] Die überwältigende Mehrheit der Debian-Betreuer verwenden git statt anderer VCS-Systeme wie hg, bzr, usw.

[5] Das ist nicht die absolute Voraussetzung. Die ablehnende Einstellung der Originalautoren kann für uns alle zu einem großen Ressourcenproblem werden. Die freundlichen Originalautoren können konsultiert werden, um alle Probleme mit dem Programm zu lösen.

Kapitel 2. Überblick |  | Kapitel 4. Werkzeugeinrichtung