|
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.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- Quellcode
Das Programm muß im Quellcode vorliegen, und es muß die
Weitergabe sowohl im Quellcode als auch in compilierter Form
erlaubt sein.
- 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.
- 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)
- Keine Diskriminierung von Personen oder Gruppen
Die Lizenz darf keine Person oder Gruppe von Personen
diskriminieren.
- 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.
- 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.
- 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.
- 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.
- 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:
|