The Debian Project

Debian @ LinuxTag 2001

– July 5th - 8th, 2001 –
– Stuttgart, Germany –

Referent: Martin Schulze <joey@debian.org>

Debian - Das Projekt, die Distribution, ...

Das Debian-Projekt nimmt eine Sonderstellung unter den Projekten ein, die Freie Sofware erstellen. Auch unter den Distributionen nimmt Debian GNU/Linux eine Sonderstellung ein.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.

Debian GNU/Linux zählt heutzutage zu einer der führenden Linux-Distributionen. Technisch wird der Standard sehr hoch gehalten. Im Gegensatz zu anderen Distributionen steht hinter Debian jedoch keine Firma, sondern Ideologie und eine Gruppe Freiwilliger.

Dennoch - oder gerade deswegen - hat es Debian weit gebracht:

  • Die größte Anzahl Binärpakete.
  • Die größte Anzahl parallel unterstützter Architekturen unter Linux, insgesamt 13 in der Entwicklung, davon sechs freigegeben.
  • Die größte Anzahl Mitarbeiter.
  • Die längste Testphase vor einem Release.
  • Öffentliches Bug Tracking System.
  • Sehr hohe Qualität.

Linux - Der Kernel

Linux bezeichnet strenggenommen nur der Kernel, also die Schnittstelle zwischen Software und Hardware. Er hat keine interaktive Benutzerschnittstelle, ist in C und Assembler geschrieben und hängt zu großen Teilen von der verwendeten Hardware und Architektur ab. Ein Linux-Kernel von einer Sparc-Workstation läßt sich z.B. nicht auf einem Athlon-PC ausführen.

Um mit einem Computer zu arbeiten, reicht der Kernel des Betriebssystems alleine nicht aus. Es werden genauso Programe benötigt, die über den Kernel mit der Hardware kommunizieren und die eigentliche Arbeit verrichten. Der Kernel muß dazu nicht nur die nötigen Schnittstellen zur Hardware bereitstellen, sondern auch Resource-Management betreiben und für die sichere Speicherung von Daten sorgen.

Kurzum, zu einem Betriebssystem gehören neben dem Kernel eine Reihe von Werkzeugen, die die Arbeit mit dem Rechner erst ermöglichen. Der Linux-Kernel stellt unter anderem Dateisysteme sowie Schnittstellen zum Netzwerk und zur Peripherie (Drucker, Maus, Grafiktablett, Monitor) zur Verfügung, die Werkzeuge greifen auf diese zu.

Für die Arbeit mit Dateien, werden Dateisysteme benötigt. Sie organisieren letztendlich die Daten auf den Massenspeichern (CD-ROM, Festplatte, Diskette etc.). Der Kernel bietet dazu verschiedene Dateisysteme an, sowie einheitliche Schnittstellen, um auf diese zuzugreifen, ohne zu wissen, um welches Dateisystem es sich letztendlich handelt. Benötigt werden zusätzlich Programme und Funktionen, die Dateien lesen und schreiben, Auflistungen von Dateien und Verzeichnissen erzeugen, nach Dateien oder Worten suchen u.s.w.

Für Netzwerkverbindungen werden Programme und Funktionen benötigt, die derartige Verbindungen aufbauen, benutzen und abbauen. Spezielle Programme verwenden das Netzwerk zur Übertragung von Daten oder allgemein von Informationen. Der Kernel stellt lediglich eine Schnittstelle für dieses zur Verfügung.

Die Distribution

Sie umfaßt neben dem Kernel die wichtigste Bibliothek, die sogenannte C-Bibliothek (auch »libc« oder »glibc« genannt), sowie Werkzeuge, um mit dem System arbeiten zu können. Während auf anderen Systemen Applikationen oftmals nicht zum Umfang der Betriebssystem-Distribution gehören, sind sie bei einer Linux-Distribution enthalten. Der Großteil der Werkzeuge auf einem Linux-System besteht aus Programmen, die von der Free Software Foundation im Rahmen des GNU-Projekts erstellt wurden. Das Debian-Projekt vertritt daher die Meinung, daß es streng genommen GNU/Linux-Systeme sind.

Der Vorteil einer solchen Distribution liegt in der Zusammenstellung. Der größte Teil eines GNU/Linux-Systems ist im Quellcode vorhanden. Mit einem Internet-Anschluß kann es auf den heimischen Rechner geladen werden. Prinzipiell ist es möglich, so von Beginn an ein eigenes Betriebssystem zusammenzustellen. Diese Arbeit ist jedoch relativ aufwendig und setzt einiges an Wissen voraus. Diese Arbeit muß sich der Benutzer jedoch nicht mehr machen. Ein Großteil der Hersteller von Linux-Distributionen machen genau dieses.

Wieso sollte man sich also diese Mühe machen, wenn verschiedene Distributoren sie meistens zufriedenstellend erledigen und das fertige Produkt zur Verfügung stellen? Eine Distribution macht jedoch mehr aus als das einfache Übersetzen des Quellcodes und zusammensetzen des Ergebnisses. Die einzelnen Komponenten sind mehr oder weniger gut in das Gesamtsystem integriert und interagieren mit anderen Komponenten.

Eine vereinfachte Installation, funktionierende Zusammenarbeit zwischen den einzelnen Komponenten, die einfache Möglichkeit, zusätzliche Programme zu installieren und andere zu deinstallieren sowie eine einfache Möglichkeit, das System zu aktualisieren bzw. auf Sicherheitsprobleme zu reagieren, machen eine Distribution erst aus.

Zusammengefaßt: Eine Distribution macht Linux für den Anwender erst benutzbar. Für Linux gibt es heutzutage längst mehr als 200 verschiedene Distributionen. Viele dieser sind jedoch für einen sehr spezielles Anwendungsgebiet gedacht und nicht für die breite Masse. Da der Quellcode offenliegt, ist es möglich, für die Anwendungsgebiete speziell zugeschnittene Distributionen zu erstellen.

Paketverwaltung

Wichtig für die dauerhafte Arbeit mit einem Rechner ist die Möglichkeit, Pakete (Programme und mehr) zum System hinzuzufügen und in das System zu integrieren. Genauso müssen nicht mehr benötigte Teile komplett gelöscht werden können. Schließlich muß es möglich sein, das System auf den aktuellen Stand zu bringen.

Im Gegensatz zur konventionellen Software-Entwicklung hat Freie Software meistens relativ kurze Release-Zyklen. Viele Programme, die nach den Regeln Freier Software entwickelt werden, sind schon nach einem halben Jahr nicht mehr aktuell. Fehler werden teilweise extrem schnell behoben, oftmals gibt es eine neue Version spätestens nach einem Monat.

Diese Entwicklung betrifft nicht nur Anwendungsprogramme, sondern vor allem auch junge Bibliotheken (wie die zu Gtk, Qt, db, SQL). Neuere Programme benötigen oft solche Bibliotheken, da sie in der neuen Version auf die neu hinzugefügten Funktionen zurückgreifen. Gleichzeitig steigen die Anforderungen an das installierte System. Ein Teil der Aufgaben, die mit Hilfe des Computers erledigt werden sollen, läßt sich mit neueren Werkzeugen einfacher ausführen als mit den älteren Versionen. Sicherheitsprobleme werden immer in neuen Versionen behoben, selten in alten, und selbst dann müßte eine neuere Version des alten Pakets installiert werden.

Es ist daher oftmals sinnvoll, das System als ganzes oder wenigstens in Teilen zu aktualisieren und auf dem laufenden zu halten. Der Hersteller der Distribution gibt dazu in gewissen Abständen neue Komplettsysteme heraus. Die Paketverwaltung des Systems sorgt für eine problemlose Installation bzw. Aktualisierung.

Dabei müssen automatisch einzelne Dateien gelöscht, überschrieben oder installiert werden. Ein Teil der Dateien darf hingegen nicht gelöscht werden, wenn es sich dabei nämlich um Konfigurationsdateien (s.u.) handelt, die vom Systemadministrator an die lokalen Begebenheiten angepaßt wurden. Solche Dateien müssen mit besonderer Vorsicht behandelt werden, da sie essentiell für das Funktionieren des Rechners sind.

Rückblick

Als erste Distribution gelten 1992 die Root- und Bootdisketten von Jim Winstead Jr.. Auf ihnen enthalten waren neben dem Linux-Kernel die wichtigsten Werkzeuge, die benötigt wurden, um mit dem Kernel und dem Rechner etwas sinnvolles anzustellen. Natürlich war kein Platz für Anwendungsprogramme oder gar eine grafische Oberfläche. Benutzbar waren diese beiden Disketten auschließlich von erfahrenen Benutzern, die mehr über Linux und dessen Möglichkeiten erfahren wollten.

Seit dieser Zeit hat sich viel getan. Die Menge an Software (Freshmeat, Sourceforge, die für Linux und Unix-artige Systeme verfügbar ist, hat sich enorm vergrößert. Die Gesamtsysteme sind gleichermaßen gewachsen und komplexer geworden - und gleichzeitig auch benutzerfreundlicher.

Als das Debian-Projekt am 16. August 1993 von Ian Murdock gegründet wurde, wurde von den Distributionen weder zwischen freier oder nicht-freier Software unterschieden, noch wurde eine einzige Distributionen wie ein Projekt von Freiwilligen zusammengestellt. Am Linux-Kernel haben bereits hunderte Entwickler gemeinsam gearbeitet, verteilt über den gesamten Erdball. Distributionen wurden jedoch von Firmen oder Universitäts-Abteilungen in Eigenregie zusammengestellt. Chancen zur Mitarbeit bestanden nur in äußerst geringem Maße. Fehler, die vielleicht sogar mit Korrektur berichtet wurden, zogen sich durch mehrere Versionen.

Ian Murdock hat die Distribution mit dem Ziel ins Leben gerufen, eine Distribution zu entwickeln, die mit den Ideen Freier Software gemeinschaftlich von den Projektmitgliedern erstellt wird und die aus Freier Software besteht und die zwischen freier und nicht freier Software unterscheidet. Diese Initiative wurde von der Free Software Foundation für förderungswürdig befunden und von November 1994 bis November 1995 sogar unterstützt.

Die erste Zeit

Die ersten Entwickler traten dem Projekt bei, da es das einzige war, das offen war, nach Ideen Freier Software zusammengestellt wurde, und keine Firma dahinter stand. Insbesondere die Tatsache, daß keine einzige Firma hinter dem Projekt stand, machte es für viele Personen attraktiv, sicherte es doch zusammen mit der Ideologie den Fortbestand und den Sinn der gemeinschaftlichen Arbeit.

Damals wurde das Fundament für das heutige Projekt gelegt. Der Paketmanager »dpkg« und die erste Version von Source-Archiven wurden entwickelt. Das Debian-Projekt hat die erste Linux-Distribution zusammengestellt, die Pakete zusammen mit deren Abhängigkeiten zur Verfügung stellt und dadurch die damalige Paketverwaltung revolutioniert.

Die damaligen Linux-Distributionen waren geprägt von Systemen, die nur dann sinnvoll eingesetzt werden konnten, wenn man einen Teil der installierten Pakete nach der Installation wieder löscht, sich ihren Quellcode holt, anpaßt und übersetzt, und diese Software stattdessen verwendet. Die Distributoren waren nicht in der Lage, ordentlich zusammengestellte Systeme zu liefern.

Den Ausweg aus diesem Dilemma versucht das Debian-Projekt zu beschreiten. Nicht eine einzige Person oder ein dutzend Mitarbeiter stellen die Distribution zusammen, sondern beliebig viele Personen, die sich mit der Materie auskennen. Sie arbeiten vorrangig an den Teilen, die sie gut kennen und an denen sie oftmals ein persönliches Interesse haben. Jeder arbeitet nur soviel wie er persönlich an Zeit aufbringen kann.

Mehr und mehr Entwickler sind dem Debian-Projekt beigetreten und haben die Software verbessert. Viele dieser sind nur deshalb beigetreten, weil ihre Freiheiten in diesem Projekt gewährleistet wurden. Ein Teil ist aufgrund technischer Gesichtspunkte auf das Projekt aufmerksam geworden. Schon damals wurde ein sauberer Entwicklungsprozeß gepflegt und viel Wert auf das Copyright der Autoren gelegt. Die Trennung zwischen freier und nicht freier Software wurde immer deutlicher, bis 1997 die "Debian-Richtlinien für Freie Software" (DSFG) aufgestellt wurden. Damit wurde eine deutliche Linie zwischen freier und nicht freier Software gezogen, so wie die Debian-Entwickler sie kategorisieren.

Entwicklung

Seit Beginn des Projekts hat es viele Entwickler angezogen. Die meisten von ihnen arbeiten nicht ausschließlich aus technischen Erwägungen an der Distribution, sondern vor allem wegen der durch die Richtlinien (DFSG) gesicherten Freiheiten. Viele Entwickler verfolgen dabei eine ähnliche Linie wie Richard Stallman, dem Begründer Freier Software und der Free Software Foundation (FSF). Die Zahl der Entwickler nimmt beständig zu, wie die folgende Tabelle verdeutlicht:

1993 - 5 Entwickler
1994
1995 - ~60
1996 - ~120
1997 - ~220
1998
1999 - ~500
2000 - ~700
2001 - ~950

Die Entwicklung von Debian findet seit Beginn komplett in der Öffentlichkeit statt. Das gesamte System liegt komplett auf FTP-Servern im Internet, so daß es jederzeit von interessierten Personen getestet und untersucht werden kann. Die Entwicklung wird öffentlich diskutiert und Fehler im System werden in einem öffentlichen Forum berichtet.

Das war seit Beginn der Fall und ist immer noch so. Allerdings wurde die Technik erheblich verbessert. 1994 wurde das Bug-Tracking-System entwickelt, ein per Mail gesteuertes System, das Fehlerberichte verwaltet und auf Webseiten sowie per Mail zur Verfügung stellt. Mit diesem System wurde die Bearbeitung von Fehlerberichten erheblich vereinfacht. Das System wird inzwischen auch von anderen Organisationen (z.B. Gnome, KDE) eingesetzt.

Ein Teil der von Debian oder dessen Mitgliedern entwickelter Werkzeuge befindet sich in einem öffentlich zugänglichen CVS-Archiv , auf das nicht nur anonym zugegriffen werden kann, sondern auch über ein komfortables Web-basiertes Frontend.

Verbessert wurden ebenfalls die Möglichkeiten für Diskussionen. Das Debian-Projekt betreibt inzwischen über 150 Mailing-Listen mit teilweise über 17.000 eingetragenen Adressen. Die auf diesen Listen geführten Diskussionen werden öffentlich archiviert, so daß die nachgelesen werden können, ohne daß der Leser selbst auf den Listen eingetragen sein muß.

Ein großer Teil der Debian-Mitglieder entwickelt zudem unabhängig vom Debian-Projekt Freie Software. Teilweise waren sie schon vor ihrem Beitritt zum Projekt Autoren Freier Software, teilweise haben sie Projekte erst später übernommen oder ins Leben gerufen. Daran ist deutlich zu erkennen, wie stark die Entwickler hinter den Ideen Freier Software stehen.

Chronik

Einige der wichtigsten Ereignisse seien an dieser Stelle in einer unvollständigen Chronik über das Debian-Projekt aufgeführt.

August 1993			- Gründung des Projekts
August 1993 - März 96		- Projektleiter: Ian Murdock
Dezember 1993			- Debian 0.90
Januar 1994			- Debian 0.91
1994				- Bug-Tracking-System
November 1994 - November 1995	- Sponsoring durch FSF
März 1995			- Debian 0.93R5
1995				- Entwicklung von »dselect«
Sommer 1995			- Joey I tritt bei
November 1995			- Debian 0.93R6, 60 Entwickler
1995				- Geburt: master.debian.org
April 1996 - Dezember 1997	- Projektleiter: Bruce Perens
August 1996			- Joey II tritt bei
Juni 1996			- Debian 1.1 alias buzz, 474 Pakete
Dezember 1996			- Debian 1.2 alias rex, 848 Pakete, 120 Entwickler
Juli 1997			- Debian 1.3 alias bo, 974 Pakete, 200 Entwickler
1997				- Debian-Richtlinien für Freie Software (DFSG)
September 1997			- Kongreß des Individual Network mit Debian-Vortrag
Januar 1998 - Dezember 1998	- Projektleiter: Ian Jackson
März 1998			- Entwicklung von »apt-get«
Juli 1998			- Debian 2.0 alias hamm, 1500 Pakete, 400 Entwickler, i386 und m68k
Herbst 1998			- Linux-Kongreß mit Debian-Workshop
Januar 1999 - März 2001		- Projektleiter: Wichert Akkerman
März 1999			- Debian 2.1 alias slink, 2230 Pakete, über 400 Entwickler, i386, m68k, alpha und sparc
Juni 1999			- LinuxTag mit Debian-Vortrag und Debian-Stand
Juli 1999			- Entwicklung »debconf«
September 1999			- Linux-Kongreß mit Debian-Workshop
März 2000			- ftp-master.debian.org, UltraSPARC
Juni 2000			- LinuxTag mit Debian-Stand
August 2000			- Debian 2.2 alias potato, 3901 Pakete, 450 Entwickler, i386, m68k, alpha, arm, powerpc und sparc
März 2001			- Projektleiter: Ben Collins
Juli 2001			- LinuxTag mit Debian-Vortrag und Debian-Stand

Die Anzahl der Pakete, die in die Distribution aufgenommen werden, wächst beständig, praktisch täglich werden neue Pakete aufgenommen. In jeder Woche treten mehrere Personen dem Projekt bei und arbeiten an der Distribution mit. Die Anzahl der unterstützten Architekturen hat längst den einstelligen Bereich verlassen, 13 Architekturen werden im Moment unterstützt.

Der Gesellschaftsvertrag

Kopiert von www.debian.org.

Die folgenden Punkte legt Debian im Gesellschaftsvertrag fest.

Die folgenden Punkte legt Debian im Gesellschaftsvertrag fest.

  1. Debian wird 100% freie Software bleiben

    Wir versprechen, daß die Debian GNU/Linux Distribution auch weiterhin vollständig aus freier Software bestehen wird. Da es viele verschiedene Auslegungen des Begriffs "freie Software" gibt, haben wir weiter unten die Richtlinien (nächster Abschnitt) aufgeführt, nach denen wir freie Software identifizieren. Trotzdem werden wir Anwender unterstützen, die nicht-freie Programme einsetzen oder entwickeln. Wir werden aber niemals das Gesamtsystem von nicht-freier Software abhängig machen.

  2. Unser Beitrag zur Gemeinschaft für freie Software

    Wenn wir neue Komponenten des Debian-Systems schreiben, so werden wir sie als freie Software lizensieren. Wir werden das bestmögliche System erstellen, so daß freie Software weit verbreitet und genutzt wird. Wir werden Korrekturen, Verbesserungen, Anwenderwünsche usw. an die ursprünglichen ("upstream") Autoren weiterleiten, deren Programme in unser System integriert wurden.

  3. Wir werden Probleme nicht verbergen

    Wir werden unsere Fehlerdatenbank für alle Zeiten öffentlich betreiben. Fehlermeldungen, die von Anwendern online abgeschickt werden, werden augenblicklich für andere sichtbar.

  4. Unsere Prioritäten sind unsere Anwender und freie Software

    Wir orientieren uns an den Bedürfnissen unserer Anwender und der Gemeinschaft für Freie Software. Ihre Interessen stehen an erster Stelle. Wir werden unsere Nutzer bei ihrer Arbeit mit den verschiedensten Rechnerumgebungen unterstützen. Wir haben nichts dagegen, daß kommerzielle Software auf Debian-Systemen eingesetzt wird. Außerdem erlauben wir anderen eine erweiterte ("Value-Added") Distribution zu erstellen, die Debian und kommerzielle Software enthält, ohne dafür irgendwelche Gebühren zu erheben. Um diese Ziele zu erreichen, werden wir ein integriertes System von hoher Qualität und 100% freier Software anbieten, die die gerade beschriebene Nutzung nicht durch rechtliche Einschränkungen, wie z. B. durch Lizenzverträge, verhindert.

  5. Programme, die nicht unseren Standards für freie Software genügen

    Wir wissen, daß einige unserer Anwender unbedingt Programme einsetzen müssen, die nicht den Debian-Richtlinien für Freie Software entsprechen. Für solche Programme haben wird die zusätzlichen Bereiche »contrib« und »non-free« auf unserem FTP-Archiv eingerichtet. Die Software in diesen Verzeichnissen ist nicht Bestandteil des Debian-Systems, wurde aber trotzdem für den Einsatz in einem Debian-System vorbereitet. Wir empfehlen den CD-Herstellern, die jeweiligen Lizenzbestimmungen der Programmpakete in diesen Verzeichnissen zu studieren und selbst zu entscheiden, ob sie die Programme mit ihren CDs verteilen dürfen. Obwohl die Programme aus »non-free« nicht Bestandteil der Debian-Distribution sind, unterstützen wir ihren Einsatz und bieten Infrastruktur für diese nicht freien Programme an, z. B. unsere Fehlerdatenbank und die Mailing-Listen.

Die Debian-Richtlinien für freie Software

Auf Englisch »Debian Free Software Guidelines« (DFSG).

  1. Unbeschränkte Weitergabe

    Ein Bestandteil der Debian-Distribution darf durch seine Lizenz nicht verhindern, daß irgendjemand diese Software als Bestandteil einer Software-Distribution, die Programme aus den verschiedensten Quellen enthält, verkauft oder weitergibt. Die Lizenz darf keine Abgaben oder sonstige Leistungen für einen solchen Verkauf fordern.

  2. Quellcode

    Das Programm muß im Quellcode vorliegen, und es muß die Weitergabe sowohl im Quellcode als auch in compilierter Form erlaubt sein.

  3. Weiterführende Arbeiten

    Die Lizenz muß Veränderungen und weiterführende Arbeiten gestatten und es erlauben, daß diese unter den gleichen Lizenzbedingungen weitergegeben werden dürfen wie die Original-Software.

  4. Integrität des ursprünglichen Quellcodes

    Die Lizenz darf die Weitergabe von verändertem Quellcode nur dann verbieten, wenn sie die Weitergabe von sogenannten Patch-Dateien mit dem Quellcode erlaubt, die dazu dienen, das Programm vor seiner Herstellung zu modifizieren. Die Lizenz muß ausdrücklich die Weitergabe der aus dem veränderten Quellcode erzeugten Programme erlauben. Die Lizenz darf fordern, daß die veränderten Programme einen anderen Namen oder eine andere Versionsnummer tragen müssen.

    (Dies ist ein Kompromiß. Die Debian-Gruppe ermutigt alle Autoren, Veränderungen an Dateien sowohl im Quellcode als auch in Binärform zu erlauben)

  5. Keine Diskriminierung von Personen oder Gruppen

    Die Lizenz darf keine Person oder Gruppe von Personen diskriminieren.

  6. Keine Diskriminierung von Einsatzbereichen

    Die Lizenz darf keine Einschränkungen hinsichtlich des Einsatzbereichs vornehmen. Beispielsweise darf sie nicht verhindern, daß das Programm geschäftlich oder für genetische Forschungen verwendet wird.

  7. Weitergabe der Lizenz

    Die mit einem Programm verbundenen Rechte müssen für alle gelten, die das Programm erhalten, ohne daß es für sie notwendig ist, eine zusätzliche Lizenz zu erwerben.

  8. Keine spezielle Lizenz für Debian

    Die mit dem Programm verbundenen Rechte dürfen nicht davon abhängig sein, daß das Programm Teil des Debian-Systems ist. Falls das Programm aus der Debian-Distribution herausgenommen wird und ohne Debian genutzt oder vertrieben werden soll, ansonsten aber im Rahmen der Programmlizenz bleibt, so müssen alle Parteien, die das Programm bekommen, die gleichen Rechte haben, wie sie im Zusammenhang mit dem Debian-System gewährt wurden.

  9. Keine Auswirkungen auf andere Programme

    Die Lizenz darf keine Beschränkungen besitzen, die Auswirkungen auf andere Software hat, die mit diesem Programm weitergegeben wird. Beispielsweise darf die Lizenz nicht vorschreiben, daß alle anderen Programme auf dem gleichen Medium freie Software sein müssen.

  10. Beispiellizenzen

    Die "GPL", "BSD" und "Artistic" Lizenzen sind Beispiele für Lizenzen, die wir als "frei" betrachten.

Siehe dazu auch http://www.gnu.org/philosophy/license-list.html.

Ideologie

An den Formulierungen des Gesellschaftsvertrages und der Richtlinien für Freie Software ist zu ersehen, daß die Mitarbeiter bei Debian viel Wert auf Freiheit legen. Nur der Bereich »main« beinhaltet Freie Software und ist Bestandteil von Debian GNU.

Eine enge ideologische Verwandtschaft zur Free Software Foundation und zu Richard Stallman, dem Begründer Freier Software, läßt sich nicht leugnen. Die FSF hat das Debian-Projekt anfangs zudem unterstützt, dennoch ist Debian eigenständig und legt seine Regeln eigenständig fest.

Die Mitarbeiter bei Debian stehen hinter Freier Software und vertreten dies auch stark in der Öffentlichkeit. Dadurch definiert sich das Debian-Projekt erst. Viele sind überhaupt durch diese Garantie erst zu Debian gekommen. Ohne diese strengen Richtlinien würden viele nicht im Debian-Projekt mitarbeiten.

Mehrfach konnte erreicht werden, daß Autoren ihre Lizenz überdacht haben und in der neuen Version ihrer Software eine freie verwendet haben. Oftmals wollten die Autoren tatsächlich Freie Software entwickeln, haben jedoch ihr Terrain verlassen und zusätzlich eine Lizenz erarbeitet. Teilweise enthielt sie unerwünschte Restriktionen, die auf Anhieb nicht zu erkennen waren. Beispiele dafür sind ircII (sowie Erweiterungen BitchX und epic), vim, ncftp und KDE/Qt.

Im Debian-Projekt wird sehr sorgfältig mit Lizenzen umgegangen. Jede Lizenz wird auf jeden Fall vom Paketbetreuer selbst gelesen und überprüft. Danach wird entschieden, ob das Paket in die Distribution aufgenommen werden darf oder nicht. Wenn sich der Paketbetreuer bei einer Lizenz nicht sicher ist, fragt er auf einer entsprechenden Mailing-Liste nach. Dort lesen die Leute mit, die sich ausführlich mit Lizenzen beschäftigt haben.

In jedem Binärpaket wird die Lizenz des Pakets oder ein Verweis darauf in »/usr/share/doc//copyright« gespeichert. Die Benutzer werden nicht im unklaren darüber gelassen, woher das Paket stammt und wer es entwickelt hat. Der Autor eines Pakets wird auf jeden Fall genannt und damit seine Arbeit gewürdigt.

In dieser Datei steht zudem eine Adresse, von wo das ursprüngliche Paket geholt wurde. Dadurch sind die Benutzer in der Lage, selbst an der Entwicklung dieses Pakets mitzuwirken und ggf. neuere Versionen auf ihrem Rechner zu installieren, bevor sie in die Debian-Distribution aufgenommen werden.

Darüberhinaus werden sogenannte »changelog«-Dateien installiert, aus denen die Entwicklung des Pakets zu ersehen ist, sowohl der ursprünglichen als auch der Debian-Versionen. So kann jederzeit nachvollzogen werden, wie sich die Pakete entwickelt haben.

Organisation

Die Organisation im Debian-Projekt unterscheidet sich grundlegend von der anderer Projekte. Im Debian-Projekt gibt es keine Hierarchien, vom Projektleiter einmal abgesehen. Alle direkten Mitglieder im Projekt sind gleichwertige Entwickler. Lediglich der Projektleiter ragt heraus. Er wird jährlich von allen eingetragenen Entwicklern gewählt.

Neben den eingetragenen Debian-Entwicklern (rund 800 zur Zeit der Erstellung dieses Textes) gibt es viele hunderte Personen, die helfen, das System zu verbessern, indem sie die Software testen, Fehler berichten, Dokumentation erstellen oder an den Webseiten arbeiten.

Nicht alle Mitglieder im Debian-Projekt befassen sich jedoch ausschließlich mit der Pflege von Paketen. Ein kleiner Teil der Entwickler kümmert sich um übergreifende Aufgaben, und bietet auf diese Weise einen stabilen Rahmen für das gesamte Projekt (siehe dazu auch weiter unten die Beschreibung der Teams).

Dennoch ist der Grad der Organisation innerhalb des Debian-Projekts extrem hoch. Kein anderes Projekt mit annähernd vielen Mitgliedern ist derart detailiert organisiert. Zu fast allem existieren Dokumente, die Regeln oder das jeweilige Vorgehen beschreiben. Sie wurden von den Entwicklern geschrieben und akzeptiert. Das fängt an bei der Art, wie Software zu paketieren ist, wie Versionsnummern auszusehen haben, und geht über Richtlinien, was als Freie Software angesehen wird und was nicht, das Anlegen neuer Mailing-Listen bis hin zu detailierten Beschreibungen, wie eine Wahl abzulaufen hat und wie die Stimmen gezählt werden.

Dabei haben sich viele der Projektmitglieder noch nie zu Gesicht bekommen und werden wahrscheinlich auch niemals die Chance dazu erhalten. Sie sind über den Globus verteilt und koordinieren sich ausschließlich über das Internet. Der größte Teil der Kommunikation findet über öffentliche Mailing-Listen statt, ein kleiner Teil auch über private Mails sowie in Echtzeit mit Hilfe von IRC (Internet Relay Chat) (siehe auch Debian Lessons).

Über wichtige Dinge im Projekt stimmen alle eingetragenen Entwickler in einer geheimen oder öffentlichen Wahl ab. Als Software wird dazu eine Variation der im Usenet verbreiten Wahlsoftware verwendet, die zusätzlich als Debian-Paket (»debvote«) verfügbar ist. Gewählt wird z.B. jährlich der Projektleiter (zuletzt im März 2001) oder wegen vorgeschlagener Änderungen in der Verfassung (Constitution).

Teams

Natürlich kann das Projekt nicht funktionieren, wenn es nur aus Personen bestünde, die Software pflegen, sich jedoch nicht um eine generelle Organisation kümmern. Es muß ein stabiler organisatorischer Rahmen vorhanden sein, in dem die vielen Entwickler arbeiten können. Die essentielle Infrastruktur muß vom Projekt als solches zur Verfügung gestellt werden, so daß sie die organisatorische Basis für das Projekt bildet. Sie ist für das Funktionieren und den Zusammenhalt des Projekts extrem wichtig.

Im Debian-Projekt kann niemand gezwungen werden, an einer Sache zu arbeiten oder etwas zuende zu bringen. Es gibt, anders als in einer Firma, keine Vorgesetzten und Hierarchien. Dennoch funktioniert das Projekt. Es endet nicht in einem heilosen Chaos, was teilweise dem hohen Organisationsgrad zuzuschreiben ist, teilweise den Personen, die einen größeren Blick für's Ganze haben.

Jedes Mitglied kann selbst entscheiden wieviel Zeit für die Arbeit im Projekt aufgebracht wird und an welcher Stelle gearbeitet wird. Während die sich meisten Mitglieder für die Pflege von Software entscheiden, gibt es auch eine gute Handvoll Entwickler, die übergeordnete Aufgaben übernehmen und damit die Rahmenbedingungen für das Projekt schaffen.

Oftmals werden derartige Aufgaben nicht von einer einzelnen Person übernommen, sondern von einer kleinen Gruppe Entwickler, von denen einer meistens nach außen als Ansprechpartner fungiert. Diese Teams haben sich oft eigene Regeln aufgestellt, nach denen sie agieren und entscheiden, ob und welche weiteren Personen ins Team aufgenommen werden. Nur wenige derartige Aufgaben oder Teams werden vom Projektleiter eingesetzt, meistens entstehen sie "von selbst" und organisieren sich eigenständig. Auch hier gibt es meistens öffentliche Mailing-Listen, über die der Austausch stattfindet, so daß auch hier hohe Transparenz gewährleistet ist.

Vereinfacht läßt sich die Struktur im Projekt mit folgender Grafik darstellen. Im folgenden ein kleiner Überblick über einen Teil der vorhandenen Teams.

  • New-Maintainer

    Diese Personen bearbeiten neue Mitgliedsanträge. Das Projekt ist zu wichtig, als daß beliebige Personen unkontrolliert Pakete einbringen und auf den Servern ihren Unfug treiben dürften. Debian wird in vielen Firmen eingesetzt und nahm sogar an einer NASA-Mission teil. Das New-Maintainer-Team sorgt für eine entsprechnede Kontrolle.

  • Webmaster

    Der Webserver www.debian.org samt aller Mirror sowie cgi.debian.org wird von einer großen Gruppe Personen gepflegt. Nicht alle Mitglieder sind eingetragene Debian-Entwickler, und auch nicht alle kümmern sich um alle Teile der Website. Insbesondere sind ein Teil der Personen, die die Website in eine der 22 Sprachen übersetzen, keine eingetragenen Entwickler. Das Debian-Projekt ist eine der wenigen Organisationen, die Content-Negotiation erfolgreich und transparent für ihre Website einsetzt. Mit dieser Technik ist es möglich, daß Besucher Webseiten automatisch in der gewünschten Sprache erhalten.

  • Administration

    Das Debian-Projekt unterhält knapp 20 Rechner, die auf verschiedenen Kontinenten verteilt sind und gewartet werden müssen. Ein spezielles Team von Entwicklern hat diese Aufgabe übernommen. Die Koordination findet über eine private Mailing-Liste statt, deren Mitglieder ebenfalls aus verschiedenen Kontinenten stammen.

  • Listmaster

    Das Debian-Projekt unterhält rund 150 Mailing-Listen zu vielen verschiedenen Themen. Die Listmaster pflegen diese Listen, kümmern sich um die Benutzer, richten neue Liste ein und dokumentieren diese. Ein Teil der Mailing-Listen sind auf die eine oder andere Weise moderiert. Teilweise wurden neue Möglichkeiten der Moderation geschaffen. Auf einigen Listen werden nur Mails akzeptiert, die mit einem gültigen GnuPG/PGP-Schlüssel signiert sind.

  • FTP-Master

    Der Kern der Entwicklung an der Debian-Distribution liegt auf ftp-master.debian.org, und wird von den FTP-Mastern gepflegt. Jeder Entwickler, der Pakete pflegt, lädt seine Dateien auf diesen Rechner, so daß sie von regelmäßig laufenden Programmen gelesen, bearbeitet und einsortiert werden können. Ungültige Pakete werden automatisch abgewiesen. Korrekte Pakete werden vollautomatisch in die richtige Distribution (stable, proposed-updates, testing, unstable) und in die richtige Architektur (13 zur Zeit) des Archivs einsortiert. Die Indexdateien werden ebenfalls automatisch generiert.

  • Security-Team

    "Wo gehobelt wird, da fallen Späne", besagt ein altes Sprichwort. Das ist bei Software nicht anders. Je komplexer sie ist, desto höher ist die Wahrscheinlichkeit, daß sie Fehler enthält. Meistens ist das kein allzugroßes Problem, doch manche Fehler sind sicherheitskritisch, da sie nicht nur über das Netzwerk provoziert werden können, sondern durch geschicktes Taktieren möglicherweise auch Zugang zum System öffnen, der nicht gewollt ist.

    Das Security-Team von Debian ist zwar personell nicht in der Lage die Programme der Reihe nach zu überprüfen, doch sorgt es meistens dafür, daß neue Pakete ohne Sicherheitsproblem relativ schnell nach Bekanntwerden des Problems zur Verfügung stehen. Dazu sind sie nicht auf das normale Archiv angewiesen, sondern stellen ein eigenes zur Verfügung.

    Berücksichtigt werden jeweils alle freigegebenen Architekturen (zuletzt für 2.2: alpha, arm, i386, m68k, powerpc und sparc) der jeweils stabilen Distribution. Für derartige Aktualisierungen werden vom Security-Team Sicherheitsgutachten (Security Advisories) herausgegeben, die digital signiert sind und auf verschiedenen wichtigen Sicherheits-Listen weiterverteilt werden.

  • Boot-Floppies

    Dieses Teilprojekt bearbeitet die wichtigste Aufgabe im Projekt, um die Distribution installierbar zu halten. Bei der Entwicklung der Boot-Floppies treten jedoch zwei Probleme zutage. Zum einen müssen sie alle Architekturen unterstützen, für die das System freigegeben werden soll, und zum anderen ist erheblicher Programmieraufwand vonnöten, den sich nur wenige Personen zutrauen. Darüberhinaus müssen die Boot-Floppies dokumentiert werden. Das Installationsdokument muß ebenfalls alle Architekturen unterstützen. Darüberhinaus gibt es Übersetzungen in mehrere Sprachen, die ebenfalls gepflegt werden müssen.

    Das Resultat davon ist ein relativ komplexes System von Programmcode und Dokumentation, das abhängig von der eingestellten Sprache und Architektur entsprechende Dateien erzeugt. Nichtsdestotrotz haben sich auch hier Entwickler der verschiedenen Architekturen und Sprachen zusammengefunden, die Boot-Floppies erstellen und verbessern.

  • Quality Assurance

    Das QA-Team versucht, die Qualität der Debian-Distribution hoch zu halten und kümmert sich auch um verwaiste Pakete (die der eigentliche Betreuer abgegeben hat).

  • Release Maintenance

    Zukünftige Releases müssen behutsam vorbereitet werden. Regeln müssen aufgestellt werden, wann das System als stabil gilt und tatsächlich freigegeben werden kann. Das geht weit über die Aufgaben eines normalen Debian-Entwicklers hinaus. Abhängigkeiten müssen aufgelöst sein, Konflikte dürfen die Installation der Pakete nicht unmöglich machen, Boot-Floppies müssen funktionstüchtig sein und die verschiedenen Architekturen müssen synchronisiert sein. Daneben dürfen in den Paketen keine kritischen Fehler enthalten sein, die eine Veröffentlichung verhindern könnten. Normalerweise wird diese Aufgabe von einer Person übernommen, der jedoch weitere zuarbeiten.

  • Policy-Group

    Obwohl die Debian-Policy und die Paketierhandbücher exzellent zusammengestellt sind, bedürfen sie dennoch von Zeit zu Zeit Aktualisierungen, um neuen Begebenheiten oder Anforderungen Rechnung zu tragen. Mehrere Entwickler bereiten Änderungen vor, die nach streng formalen Regeln allen anderen Entwicklern vorgeschlagen werden und anschließend unter Umständern übernommen werden.

  • Dokumentation

    Für viele Entwickler ist es ein Graus, Dokumentation für die Programme zu schreiben. Das ist beim Debian-Projekt nicht anders, dennoch gibt es auch hier Personen, die sich darum kümmern, daß Dokumentation erstellt und gewartet wird. Neben generellen Dokumenten müssen solche gepflegt werden, in denen die Prozesse des Projekts beschreiben werden, sowie die Dokumentation der Boot-Floppies. Viele Dokumente sind im Debian Documentation Project zusammengefaßt.

  • Legal

    Auf einer speziellen Mailing-Liste beschäftigen sich die Personen mit Lizenzfragen, die sich Erfahrung mit den verschiedenen Lizenzen und dem Rechtssystem angeeignet haben. Wenn einem Entwickler nicht klar ist, ob die vorliegende Lizenz frei ist, kann diese Liste hilfreich sein.

  • Public Relations

    Das Ziel des Debian-Projekts besteht darin, eine freie Distribution herauszugeben. Die Hauptinteressen der Entwickler bestehen naturgemäß in der Entwicklung von Software bzw. dem Paketieren von Software. Dennoch haben sich auch für diesen Bereich einige Personen gefunden, die sich mit Öffentlichkeitsarbeit beschäftigen und Pressemitteilungen veröffentlichen.

  • Portierung

    Begonnen wurde die Distribution für Intel-x86-kompatible Systeme. Heutzutage wird jedoch an 13 unterschiedlichen Architekturen gearbeitet. Dieses wird jedoch nicht zentral koordiniert, sondern die Personen, die Interesse an einem solchen Port haben, kümmern sich selbst darum.

  • Debian-JP

    Eine Gruppe Japanischer Entwickler hat die Debian-Distribution auserkoren, um sie an die Japanische Sprache anzupassen. Die meisten dieser Personen sind inzwischen vollkommen im Debian-Projekt integriert, die Arbeit geht jedoch weiter. Sie bereiten normale Programme darauf vor, auch Japanische Zeichen ausgeben zu können und japanische Eingaben zu akzeptieren. Ähnliche Bestrebungen gibt es für Koreanisch.

  • Paket-Pflege

    Nicht alle Pakete werden von einer einzigen Person gepflegt. Gerade bei größeren Paketen oder bei Paketen, die mehrere Architekturen direkt beeinflussen, ist es sinnvoll, daß mehr als eine Person an den Paketen arbeitet. Das ist bei den großen Paketen wie der GNU C-Bibliothek, teTeX oder der Toolchain (gcc, binutils etc.) auch der Fall. Die Entwickler koordinieren sich über eine Mailing-Liste.

  • Testing

    Neben den normalen Testern, die während der gesamten Entwicklung der Distribution die Pakete testen und Fehler sofort berichten, gibt es insbesondere vor einem bevorstehenden Release eine Gruppe von Personen, die sich das quasi stabile System vornehmen und auf Herz und Nieren testen - eine extrem wichtige Aufgabe für ein bevorstehendes neues Release.

Nur für einen Teil dieser Aufgaben wird der Status des offiziellen Debian-Entwicklers benötigt. Für die meisten Arbeiten ist es nicht erforderlich, da keine Binärpakete hochgeladen werden müssen. Diskussionen kann jede Person führen, die Mails verschicken kann. An der Website kann jeder arbeiten, der über einen Netzanschluß verfügt und CVS bedienen kann, um zu testen, zu korrigieren, Korrekturen einzuschicken oder an den Boot-Floppies zu arbeiten, wird ebenfalls nur ein Mail-Zugang benötigt.

Für wichtige interne Aufgaben, wie z.B. Security, Administration oder Release-Management werden nicht nur besondere Qualifikationen benötigt, sondern auch besondere Erfahrung und Vertrauen der anderen Entwickler. Diese Aufgaben können üblicherweise nur von langjährigen und erfahrenen Debian-Entwicklern übernommen werden.

Für die Entwicklung und die hohe Qualität sind die vielen nicht registrierten Helfer unverzichtbar. Sie leisten sehr wichtige Dienste und sind insbesondere im Bereich des Auffindens von Fehlern, sowohl in Debian-eigenen Entwicklungen als auch in der paketierten Software allgemein, unersetzlich.

Software in the Public Interest, Inc.

Das Debian-Projekt hat mit Software in the Public Interest (SPI) einen Verein gegründet, der als Dachverband für das Projekt fungiert und damit Ansprechpartner in formalen (z.B. für die Internet-Domains) und finanziellen (z.B. Spenden) Fragen bietet. SPI ist von der Struktur und der Eintragung vergleichbar mit einem gemeinnützigen Verein in Deutschland.

Projektleiter

Der Projektleiter hat hauptsächlich repräsentative Aufgaben. Er kann jedoch auch die Richtung für die Entwicklung vorgeben, allerdings muß er die Entwickler bei seinen Entscheidungen hinter sich haben, da sie sonst nicht seinem Weg folgen würden. Sie entscheiden normalerweise für sich selbst, was sinnvoll ist und was nicht. Die meisten werden nur solchen Vorgaben folgen, die sie auch selbst für sinnvoll erachten, schließlich ist es ihre Freizeit, in der sie für das Projekt arbeiten. Der Projektleiter kann auch kein Release herausgeben, er kann bestenfalls mit dem Release-Manager diskutieren, wie man die Freigabe beschleunigen kann und die Entwickler ermahnen.

Für formale und in den verschiedenen Dokumenten beschriebenen Aufgaben ernennt der Projektleiter einen Assistenten.

Infrastruktur

Eine der wichtigsten Voraussetzungen für die Debian-Distribution sind die technischen Voraussetzungen, damit die vielen Entwickler und Unterstützer arbeiten können. Auf mehreren Rechnern müssen Dienste für die Verwaltung, Archivierung, Öffentlichkeitsarbeit, Kommunikation und Entwicklung bereitgestellt werden. Das Debian-Netzwerk ist eine seit mehreren Jahren gewachsene Struktur.

Die meisten Dienste sind derart ausgelegt, daß sie auf einem zweiten Rechner bereitliegen, so daß bei einem Ausfall auf das Backup zurückgegriffen werden kann. Das Debian-Projekt ist in der glücklichen Lage, daß relativ viele Rechner zur Verfügung stehen und mehrere Netz-Anbindungen hoher Bandbreite genutzt werden dürfen.

Neben den Rechnern, die administrative Aufgaben übernehmen (Listserver, CVS-Server, FTP-Server, Mail-Server, DNS-Server, Webserver, FTP-Master etc.), befinden sich in der Obhut des Projekts viele Rechner unterschiedlicher Architekturen, die für die Portierung der Distribution auf nicht-Intel-basierte Architekturen benutzt werden. Auf viele dieser Rechner erhalten alle Entwickler bei der Aufnahme ins Projekt automatisch (über LDAP) Zugriff. Auf einem Teil dieser Rechner laufen sogenannte Auto-Compiler (s.u.), die aktuelle Pakete für die fehlenden Architekturen compilieren und so den jeweiligen Port voranbringen. Viele Pakete lassen sich derart automatisch compilieren, daß die Entwickler entlastet werden.

Die Debian-GNU-Distribution

Selbst für diejenigen, für die die oben beschriebenen Freiheiten nicht so wichtig sind wie für die meisten Debian-Entwickler, bietet das Debian-Projekt oftmals die passende Linux-Distribution. Schon vor mehreren Jahren hat das Debian-Projekt verschiedene Techniken entwickelt, mit denen die Distribution aus technischer Sicht überzeugt. Ein Teil dieser sind mittlerweile in anderen Distributionen ebenfalls enthalten.

Die Distribution besteht aus vielen kleinen Paketen. Sie enthalten neben Meta-Informationen die eigentlichen Programme sowie deren Dokumentation. Die Pakete sind so zusammengestellt, daß sie nicht nur auf jedem Unix-System ausgepackt werden können, sondern auch derart, daß sie sauber in das Debian-System integriert werden. Die Integration obliegt den Paket-Verwaltern und wird in verschiedenen Dokumenten beschrieben (s.o.). Eine ».deb«-Datei ist nichts anderes als ein »ar«-Archiv bestehend aus drei einzelnen Dateien, von denen eine die eigentlichen Daten enthält.

Damit kann jedes Debian-Paket mit den Befehlen »ar«, »tar« und »gunzip« ausgepackt werden. Sie können damit relativ problemlos auch auf anderen Linux-Systemen verwendet werden und sogar auf anderen Unix-Systemen untersucht werden. Aufgrund der verschiedenen Werkzeuge und Mechanismen auf einem Debian-System, sind Debian-Pakete üblicherweise intern komplexer aufgebaut als Pakete für andere Distributionen. Mit diesen Mechanismen werden die Pakete sauber in das bestehende System integriert. Vieles geschieht vor oder nach der eigentlichen Installation in einem von vier Skripten (Shell oder Perl, s.u.), die jedem Paket beigelegt werden können, verschiedene Argumente unterstützen müssen und Anpassungen an das lokale System durchführen sollen. In diesen werden die verschiedenen Mechanismen aktiviert wie Menüs aktualisieren, Services starten oder beenden, Dokumentation hinzufügen oder löschen, Konfigurationen ändern oder zusammen mit anderen Paketen Dienste anbieten.

Wer Pakete anderer Distributionen installieren möchte, der wird nicht im Regen stehen gelassen. Mit dem von einem Debian-Entwickler geschriebenen »alien« besteht die Möglichkeit, ein beliebiges Paket in ein ».deb« umzuwandeln. So lassen sich im übrigen auch Debian-Pakete in RPM-Pakete umwandeln. Allerdings darf man sich nicht blind auf »alien« verlassen, denn bei der Umwandlung können nicht alle Mechanimen der jeweiligen Distributionen berücksichtigt werden, da sie unterschiedlich funktionieren. Mit der Umwandlung ist meistens ein gewisser Informationsverlust verbunden.

Quellcode

Die Mitarbeiter von Debian vertreten die Ansicht, daß nur dann etwas tatsächlich frei ist, was sie verändern und ohne die Lizenz zu verletzen weitergeben dürfen. (siehe DFSG, 2. und 4.) Der Quellcode zu jedem in der Distribution (»main«) enthaltenen Programm liegt in einem Parallelverzeichnis zu den Binärpaketen »source« auf dem FTP-Server und dessen Spiegelungen.

Auf den Quellcode zu einem Paket muß einfach zugegriffen werden können. Die Hersteller der Distribution müssen dafür Sorge tragen, daß die Quellcode-Pakete auf die gleiche Weise verfügbar gemacht werden wie die Binärpaket. Debian verfolgt dabei das Konzept des »Pristine Source«. Die Quellcode-Pakete von Debian bestehen normalerweise aus drei Komponenten:

  • Einer ».orig.tar.gz«-Datei

    Dieses ist der unverfälschte Quellcode, wie er von den ursprünglichen Autoren geliefert wurde. Meistens wird nur der Dateiname umbenannt. Im Falle von ».zip«- oder ».srpm«-Dateien muß jedoch umgepackt werden.

  • Einer ».diff.gz«-Datei

    Diese Datei enthält alle Änderungen in Form eines Patches, die vom Betreuer vorgenommen wurden, damit sich das compilierte Paket in das System einpaßt.

  • Einer ».dsc«-Datei

    Dieses ist eine Kontrolldatei, in der beschrieben ist, aus welchen Dateien sich der Quellcode des Debian-Pakets zusammensetzt.

Das Debian-Projekt legt Wert darauf, den Quellcode so weiterzugeben, wie die ursprünglichen Autoren ihn freigegeben haben. Bei einer neuen Version des Pakets wird die ».orig.tar.gz«-Datei nur dann neu auf den Server gelegt, wenn komplett neuer Code benutzt wurde. Wenn hingegen nur in den Anpassungen für das System etwas geändert wurde, werden nur die beiden letzten Dateien auf dem Server durch neuere ersetzt.

Durch die separate ».diff.gz«-Datei wird zum einen verhindert, daß zum Compilieren bei einer neuen Debian-Version das komplette Quellcode-Paket neu aus dem Netz gezogen werden muß, zum anderen wird so eine Möglichkeit geschaffen, die qualitativ hochwertigen Debian-Pakete auch auf Nicht-Debian Systemen zu verwenden. Benötigt werden dazu lediglich reguläre Unix-Werkzeuge wie »tar«, »gunzip« und »patch«.

Paket-Skripte

In jedem Debian-Paket (».deb«-Datei) können bis zu vier Skripte enthalten sein, die während der Installation oder Deinstallation des Pakets ausgeführt werden (Diese Skripte dürfen natürlich weitere Skripte aufrufen, die im Paket enthalten sind). Dadurch erhalten die Pakete die nötige Flexibilität, die für die gute Integration der Pakete in das System benötigt wird.

  • preinst

    Dieses wird vor der Installation eines Pakets ausgeführt. Es kann also Dateien sanft (bzw. auf Debian-Art mit »dpkg-divert«) aus dem Weg räumen, für das Paket wichtige Benutzer oder Gruppen anlegen (»adduser« oder »addgroup«, Hintergrundprogramme angehalten werden etc.

  • postinst

    Dieses Skript wird ausgeführt, wenn das Paket - sowie die anderen gleichzeitig installierten - ausgepackt wurde. Hier findet der größte Teil der lokalen Anpassungen statt. Wenn Eingaben erforderlich sind, werden sie hier verlangt.

  • prerm

    Bevor ein Paket vom System gelöscht wird, kann ein solches Skript aufgerufen werden. Hintergrundprogramme können so angehalten oder Zeiger zu Dokumentation gelöscht werden.

  • postrm

    Nachdem die Dateien eines Pakets vom System entfernt sind, besteht noch die Möglichkeit, dieses Skript ausführen zu lassen, welches die letzten Reste beseitigt, wie zum Beispiel erstellte Log-Dateien.

In diesen Paket-Skripten werden alle lokalen Anpassungen durchgeführt, die das Paket an das jeweilige System anpassen. Alle Anpassungen, die mit der spezifischen Ausstattung und Einrichtung des Rechners zusammenhängen, werden in diesen Skripten durchgeführt. Dazu gehören Änderungen der Menüdateien Index-Dateien für Dokumentation, die von den jeweils installierten Paketen abhängig sind, das Einrichten von Services, Konfiguration des Mail-Servers und der Browser etc.

Alternativen

Eine Besonderheit von Debian GNU ist die Möglichkeit, Alternativen für Programme festzulegen. Aus diesem Grund gibt es auf einem Debian-System z.B. kein Programm namens »vi« oder »emacs« wie auf anderen Linux-Systemen. Nichtsdestotrotz kann man diese Befehle eingeben und erhält einen »vi«- oder Emacs-kompatiblen Editor.

Schaut man sich die Situation unbedarft an, mutet es vielleicht merkwürdig an. »/usr/bin/vi« ist ein symbolischer Link auf »/etc/alternatives/vi«, was wiederum ein Link zu »/usr/bin/nvi« oder »/usr/bin/vim« ist. Man mag sich fragen, worin der Sinn liegt, doch dieser eröffnet sich schnell, wenn man bedenkt, daß es viele vi-kompatible Editoren gibt: »elvis«, »vim«, »nvi«, »vile« oder »jvim-canna«.

Bei der Installation dieser Programme wird dem System mitgeteilt, daß ein Programm vorliegt, das die Funktionalität von »/usr/bin/vi« bietet und es in dessen Alternativen aufgenommen werden soll. Verwaltet wird dieser Mechanismus über die symbolischen Links in »/etc/alternatives«.

Die Konfiguration dieser Technik erfolgt mit dem Programm »update-alternatives«. Rufen Sie z.B. als »root« den Befehl

update-alternatives --display vi

auf, so erhalten Sie eine Aufzählung, welche Pakete das Programm mit welcher Priorität anbieten sowie welche Alternative zur Zeit aktiv ist. Möchten Sie die Einstellung ändern, z.B. weil »vim« komfortabler als »elvis« ist, dann verwenden Sie den folgenden Aufruf:

update-alternatives --config vi

Wenn mehrere Alternativen für »vi« installiert sind, werden Sie anschließend gebeten, eine Wahl zu treffen.

Paket-Beziehungen

Die Debian-Distribution ist seit Beginn dafür bekannt, daß Beziehungen zwischen den einzelnen Paketen sauber und behutsam definiert sind. Zwar bieten heutzutage alle Linux-Distributionen ebenfalls Abhängigkeiten zwischen Paketen an, doch sind sie längst nicht so ausgereift und detailliert beschrieben wie in der Debian-Distribution.

Es gibt vier verschiedene Beziehungen (und zwei Abschwächungen der ersten) zwischen Paketen. Sie sind für die sichere Installation der Software sowie deren Funktionstüchtigkeit wichtig, denn sie stellen sicher, daß alle benötigten Komponenten vorhanden sind und kein anderes Paket in die Quere kommt.

Im folgenden werden diese Beziehungen vorgestellt. Die Bezeichnungen korrespondieren dabei direkt mit den jeweiligen Einträgen in der Paket-Definition, die im Quellcode in der Datei »debian/control« liegt und im laufenden System mit »apt-cache show paket« bzw. »dpkg -s paket« angezeigt wird.

  • Depends

    Dieser Eintrag beschreibt die Pakete, die auf jeden Fall gleichzeitig installiert sein müssen, damit dieses Paket funktioniert. Die anderen Pakete müssen auch dann installiert sein, wenn das Paket konfiguriert werden soll, wenn das »postinst«-Skript ausgeführt wird.

    Als Beispiel soll die Tabellenkalkulation Gnumeric vom Gnome-Projekt herhalten. Das Programm benötigt verschiedene Bibliotheken, damit es überhaupt läuft. Zum Zeichnen der grafischen Elemente wird Gtk verwendet, also muß eine »libgtk« installiert sein. Als Dateiformat wird XML verwendet, daher wird eine »libxml« benötigt. Dateien werden komprimiert, was von der Bibliothek »zlib« übernommen wird. Aufgrund der Anbindung an Gnome werden verschiedene »libgnome«-Bibliotheken benötigt, die ihrerseits wieder verschiedene andere Bibliotheken benötigen. So erhält man schnell einen recht komplexen Graphen von Abhängigkeiten.

    Die dargestellte Grafik zeigt eine vereinfachte Darstellung der Abhängigkeiten, damit sie lesbar bleibt. Je komplexer das Programm ist, desto komplexer werden die Abhängigkeiten. Einer der Vorteile von Freier Software ist die Möglichkeit, Code wiederzuverwenden, den andere entwickelt haben. Daher werden bei vielen Programmen viele verschiedene zusätzliche Bibliotheken benötigt.

  • Recommends

    Eine solche Empfehlung ist eine abgeschwächte Form einer Abhängigkeit. Die Paketbetreuer empfehlen, diese Pakete ebenfalls zu installieren. Sie werden jedoch nicht für die Kernaufgabe des Pakets benötigt. Allerdings funktionieren möglicherweise Teile des Pakets nicht ohne diese zusätzlichen. Der Paketmanager »dselect« behandelt Recommends und Depends gleich.

  • Suggests

    Mit solchen Vorschlägen lassen sich Abhängigkeiten noch weiter abschwächen. Wenn diese zusätzlichen Pakete installiert sind, erhält man weitere zusätzliche Möglichkeiten für die Benutzung. Das Paket »sendmail« schlägt so z.B. »procmail« vor. Procmail kann für die lokale Auslieferung von Mails verwendet werden und bringt verschiedene Vorteile mit. Es muß jedoch nicht verwendet werden.

  • Conflicts

    So wird festgelegt, welche Pakete (auch Pseudopakete) nicht parallel installiert sein dürfen. Davon wird dann Gebrauch gemacht, wenn zwei Pakete die gleichen Funktionen zur Verfügung stellen, die sich jedoch nicht gleichzeitig vertragen. Beispiele wären zwei Mail-Server, die auf dem SMTP-Port horchen, oder »kdm« und »xdm«, die beide einen grafischen Login-Bildschirm bieten.

  • Provides

    Um Abhängigkeiten besser verwalten zu können, wurden viele virtuelle Pakete definiert. Sie beschreiben Funktionalitäten, die von mehreren reellen Paketen zur Verfügung gestellt werden. Wenn z.B. ein Mail-Server benötigt wird, von einem Programm zum Lesen und Verschicken von Mail vielleicht, dann wird nur noch eine Abhängigkeit auf »mail-transport-agent« benötigt und nicht auf alle fünf Mailserver-Pakete einzeln. Im Gegenzug stellt jeder der Mailserver-Pakete dieses virtuelle Paket zur Verfügung.

  • Replaces

    Mit dieser Einstellung ist es einem Paket erlaubt, Dateien aus einem anderen Paket zu überschreiben. Normalerweise ist so etwas nicht gestattet, eine Datei auf dem System darf nur aus exakt einem Paket stammen. Dieses ist jedoch dann zu streng, wenn ein Paket aufgeteilt wird, da das alte Paket noch Dateien enthält, die in ein anderes Paket übertragen wurden. Insofern würde das neue Paket Dateien aus dem alten überschreiben.

    Analog dazu gibt es Pakete, die andere komplett ersetzen. Das ist zum Beispiel dann der Fall, wenn für die Installation nur ein kleiner Teil der Funktionalität benötigt wird und daher ein spezielles Paket erstellt und verwendet wird, das nur für die Installation des Systems gedacht ist. In einem späteren Schritt der Installation wird es vom normalen Paket komplett überschrieben.

Ähnliche Beziehungen existieren es auch auf Quellcode-Basis. Um viele Pakete zu compilieren, werden Bibliotheken benötigt, die bei der Erstellung des Pakets installiert sein müssen. Um keine fehlerhaften Interaktionen zu erhalten dürfen zusätzlich andere Pakete nicht gleichzeitig installiert sein. Debian unterstützt auch diese sogenannten "Build-Dependencies".

Konfiguration

In den Regelwerken der Distribution ist festgelegt, in welchen Verzeichnissen Dateien gespeichert werden. Dort ist unter anderem beschrieben, daß alle Konfigurationsdateien unterhalb von »/etc« gespeichert werden müssen. So läßt sich extrem einfach ein Backup der Konfiguration anfertigen, da nur ein einziges Verzeichnis kopiert werden muß. Komprimiert findet es locker Platz auf einer Diskette.

Konfigurationsdateien werden von der Paketverwaltung zudem besonders behandelt. Sie werden nicht automatisch überschrieben, wenn sie vom Administrator modifiziert wurden. Änderungen, die der Administrator des Rechners vorgenommen hat, um das System in die Umgebung einzupassen, werden nicht überschrieben.

In Zukunft wird sich die Konfiguration eines Debian-Systems weiter vereinfachen und automatisieren lassen. Mit der Verwendung von »debconf« besteht schon heute die Möglichkeit, für die Konfiguration der Pakete, die »debconf« verwenden, eines von mehreren Frontends zu verwenden. Dazu gehört u.A. auch ein grafisches Frontend. Mit »debconf« ist es zudem möglich, die Konfiguration von der eigentlichen Installation zu trennen, was ein weiterer Schritt zu einer Masseninstallation ist.

Portierung / Auto-Compiler

Die Debian-Distribution wird im Moment für insgesamt 13 Architekturen entwickelt. Freigegeben mit dem letzten Release wurde Debian GNU für sechs Architekturen (alpha, arm, i386, m68k, powerpc und sparc). Wenn die Distribution freigegeben wird, sollen die Pakete für alle beteiligten Architekturen auf dem gleichen Stand sein. Dazu muß jedes einzelne Paket für jede Architektur compiliert werden.

Diese Arbeit kann jedoch der einfache Paket-Betreuer gar nicht leisten, da er oftmals keinen Zugang zu allen beteiligten Architekturen hat. Davon abgesehen kostet es erheblich mehr Zeit, wenn er das Paket auf allen Architekturen selbst compilieren muß. Früher haben die Portierer neue Pakete auf ihrer jeweiligen Architektur compiliert. Damit war das erste Problem gelöst.

Als die Distribution noch klein war und nicht so viele Pakete täglich aktualisiert wurden, war das bei einem Port, an dem fünf Personen arbeiten, durchaus möglich. Doch die Distribution wuchs und mehr und mehr Architekturen kamen hinzu. Es wurde auf die Dauer immer unübersichtlicher, welche Pakete übersetzt werden müssen und der Zeitaufwand, einen Port auf dem aktuellen Stand zu halten, war extrem hoch. Zu hoch.

Aus dem Grund wurde ein System entwickelt, das den Quellcode der neuen Pakete automatisch vom Server lädt, die Abhängigkeiten prüft, die für für die Compilierung erfüllt sein müssen, compiliert und wieder hochlädt. Dieser Auto-Compiler wurde soweit verbessert, daß er sich auf mehrere Rechner verteilen läßt, und somit die Arbeit aufgeteilt wird.. Zur Zeit der Erstellung dieses Textes lief der Auto-Compiler für m68k (für Rechner mit Motorolas 680x0-Prozessor) auf z.B. vier Rechnern parallel.

Während der Anfang für einen neuen Port steinig ist, da alle essentiellen Werkzeuge portiert werden müssen, wird die Arbeit von dem Zeitpunkt an erheblich einfacher, von dem an der Auto-Compiler funktionstüchtig ist und zuverlässig arbeitet. Von da an müssen die meisten Pakete nicht mehr von Hand übersetzt werden, sondern das geschieht automatisch. Die Betreuer des Ports müssen allerdings die sogenannten Build-Logs sorgfältig lesen und aufgetretene Fehler korrekt weitergeben.

Die Debian-Distribution wird für die folgenden Architekturen entwickelt. Einige neuere Portierungen befinden sich in der Entwicklung und werden erst in einem der nächsten Debian-Releases enthalten sein.

alpha	Alpha-Prozessoren, mit 2.1 freigegeben
arm	ARM-RISC, Netwinder, Acorn Archimedes, mit 2.2 freigegeben
hurd-i386	Hurd-Kernel auf i386
i386	Intel x86-kompatible Prozessoren
ia64	Intels 64Bit-Prozessor
m68k	Motorolas 680x0-Prozessor, Amiga, Atari, Mac Quadra, mit 2.0 freigebeben
mips	MIPS-Prozessoren, SGI-Workstation (big endian)
mipsel	MIPS-Prozessoren, Digital Decstation (little endian)
parisc	HP PA-RISC, HP-Workstation und -Server
powerpc	Motorola/IBM PowerPC, z.B. Apple, mit 2.2 freigegeben
s390	IBM S/390
sh	Hitachi SuperH
sparc	Sparc und UltraSparc, mit 2.1 freigegeben

Die Portierung des Debian-Systems bei Verwendung eines BSD-Kernels wurde mehrfach diskutiert und ebenfalls begonnen.

Paket-Archive / Updates

Das Debian-Projekt stellt drei offizielle Archive für die stabile Distribution zur Verfügung. Aus Bequemlichkeit für die Anwender wird nicht-freie Software, die kein offizieller Teil der Distribution sein kann, dort neben »main« auch zur Verfügung gestellt in den Verzeichnissen »contrib« und »non-free«. Üblicherweise wird die APT-Zeile in »/etc/apt/sources.list« eingetragen und damit der Paketverwaltung bekanntgemacht.

  • ftp.debian.org

    Das Hauptarchiv stellt die meisten Pakete zur Verfügung.

    APT: deb ftp://ftp.debian.org/debian stable main

  • non-US.debian.org

    Hier werden die Pakete zur Verfügung gestellt, die nicht aus den USA exportiert werden dürfen, z.B. Cryptographie-Software wie OpenSSH.

    APT: deb ftp://non-US.debian.org/debian-non-US stable/non-US main

  • security.debian.org

    Das Security-Team verwaltet ein eigenes Archiv, auf dem Security-Updates bereitgestellt werden.

    APT: deb http://security.debian.org stable/updates main

Über diese Archive, die für alle Personen offen und kostenlos im Internet bereitgestellt werden, kann ein Debian-System jederzeit erweitert oder auf den aktuellen Stand gebracht werden. Es ist dabei irrelevant, ob ein einziger Rechner oder gleich eine gesamte Rechner-Farm aktualisiert werden soll. Mit folgenden Befehlen werden z.B. regelmäßig Security-Updates eingespielt:

  apt-get update
  apt-get upgrade

Die Struktur solcher Archive ist dokumentiert und kann mit Bordmitteln selbst erstellt werden. Für eine Organisation, die z.B automatisch Pakete auf alle Rechner aufnehmen möchte, besteht so die einfache Möglichkeit, selbst ein Archiv aufzubauen und obige Befehle per Cron automatisch ausführen zu lassen.

Ein Umstieg auf die jeweils sich in der Entwicklung befindliche Distribution gestaltet sich vergleichbar einfach. Dazu wird »stable« in den APT-Zeilen durch »unstable« ersetzt und anschließend folgende Befehle ausgeführt:

  apt-get update
  apt-get dist-upgrade

Wer dieses vorhat, sei gewarnt, die Distribution wird nicht ohne Grund »unstable« genannt, hin und wieder ist sie tatsächlich unstabil.

Support

Da hinter Debian keine Firma steht, gibt es keine Hotline und kein Callcenter. Support wird vom Projekt komplett über das Internet geleistet. Die klassische Adresse für allgemeine Probleme ist die englischsprachige »debian-user« Mailing-Liste. Für Deutsche Anwender ist die Deutsche Mailing-Liste gedacht. Auf beide Listen kann sich jeder einschreiben. Beide Listen werden im Web archiviert, so daß sie auch gelesen werden können, ohne auf ihnen eingetragen zu sein.

Darüberhinaus treffen sich viele Entwickler im Internet Relay Chat (IRC), einem Echtzeit-Diskussionssystem, auf den Kanälen »#Debian« (auf »irc.debian.org«) und auf »#Debian.DE« (auf »irc.fu-berlin.de«).

Akzeptanz

Wie wichtig das Debian-Projekt ist, kann niemand genau sagen. Fakt ist jedoch, daß es aufgrund seiner strengen Richtlinien für Freie Software eine Sonderstellung mit besonderer Bedeutung einnimmt. Mit dem KDE-Projekt gab es mehrfach Gespräche, bis KDE samt Qt als Freie Software angesehen und damit in die Distribution aufgenommen werden konnte.

Mehrere Firmen und Organisationen verwenden die Debian-Distribution aus technischen und rechtlichen Erwägungen als Basis für ihre Produkte. Als Beispiele seien die folgenden genannt: