Debian/Paketverwaltung: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „=== Debian-Paketverwaltung === ==== Grundlagen ==== Um weitere Pakete auf einem Debian GNU/Linux-System zu installieren, stehen mehrere Programme zur Verfügung. Neben <tt>dpkg</tt>, das auf der Kommandozeile ausgeführt wird, ist <tt>dselect</tt> das älteste von diesen mit einer Benutzeroberfläche. <tt>dselect</tt> stellt ein überaus mächtiges Programm mit vielen Möglichkeiten und allen Freiheiten dar. Dies hat aber leider nicht bei allen Anwendern…“
 
Keine Bearbeitungszusammenfassung
 
(44 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Debian-Paketverwaltung ===
'''Debian/Paketverwaltung''' - Überblick
==== Grundlagen ====
Um weitere Pakete auf einem Debian GNU/Linux-System zu installieren, stehen mehrere Programme zur Verfügung. Neben <tt>dpkg</tt>, das auf der Kommandozeile ausgeführt wird, ist <tt>dselect</tt> das älteste von diesen mit einer Benutzeroberfläche. <tt>dselect</tt> stellt ein überaus mächtiges Programm mit vielen Möglichkeiten und allen Freiheiten dar. Dies hat aber leider nicht bei allen Anwendern (gerade bei Einsteigern) zur Beliebtheit beigetragen. <tt>dselect</tt> bietet eine sehr ausführliche Online-Hilfe, aber mal ehrlich: Wer liest so etwas schon? Aber wer über einige wenige Kenntnisse von <tt>dselect</tt> verfügt, wird sehen, dass alles ganz einfach ist, und die wird Mächtigkeit dieses Werkzeugs schnell zu schätzen wissen.


<tt>apt</tt> stellt die nächste Generation der Debian GNU/Linux-Installationsprograme dar. Mit der Version 3.0 von Debian GNU/Linux ist die komplette Umstellung des Paketmanagements auf <tt>apt</tt> erfolgt.
== Beschreibung ==
Um Pakete auf einem Debian GNU/Linux-System zu installieren, stehen mehrere Programme zur Verfügung


; dpkg
* Neben <tt>dpkg</tt>, das auf der Kommandozeile ausgeführt wird, ist <tt>dselect</tt> das älteste von diesen mit einer Benutzeroberfläche. <tt>dselect</tt> stellt ein überaus mächtiges Programm mit vielen Möglichkeiten und allen Freiheiten dar.
* Dies hat aber leider nicht bei allen Anwendern (gerade bei Einsteigern) zur Beliebtheit beigetragen. <tt>dselect</tt> bietet eine sehr ausführliche Online-Hilfe, aber mal ehrlich: Wer liest so etwas schon? Aber wer über einige wenige Kenntnisse von <tt>dselect</tt> verfügt, wird sehen, dass alles ganz einfach ist, und die wird Mächtigkeit dieses Werkzeugs schnell zu schätzen wissen.
; apt
<tt>apt</tt> stellt die nächste Generation der Debian GNU/Linux-Installationsprograme dar.
* Mit der Version 3.0 von Debian GNU/Linux ist die komplette Umstellung des Paketmanagements auf <tt>apt</tt> erfolgt.
aptitude
<tt>aptitude</tt> ist nun die bevorzugte Methode zur Paketverwaltung auf der Konsole. <tt>aptitude</tt> unterstützt die meisten Kommandozeilenoperationen von <tt>apt-get</tt> und hat bessere Fähigkeiten bei der Auflösung von Abhängigkeiten bewiesen.
<tt>aptitude</tt> ist nun die bevorzugte Methode zur Paketverwaltung auf der Konsole. <tt>aptitude</tt> unterstützt die meisten Kommandozeilenoperationen von <tt>apt-get</tt> und hat bessere Fähigkeiten bei der Auflösung von Abhängigkeiten bewiesen.


„Secure APT“ ist seit Debian 4.0 Bestandteil der Distribution. Secure APT sorgt für zusätzliche Sicherheit von Debian GNU/Linux-Systemen, indem starke Kryptografie und digitale Signaturen zum Verifizieren heruntergeladener Pakete verwendet werden. Das Programm <tt>apt-key</tt> wird genutzt, um dem Schlüsselring von <tt>apt</tt> neue Schlüssel hinzuzufügen. Standardmäßig wird nur der Schlüssel zum Signieren des Debian Archives aus dem Paket <tt>debian-archive-keyring</tt> berücksichtigt. In der Standardkonfiguration wird <tt>apt</tt> nun eine Warnung ausgeben, falls Pakete aus Quellen heruntergeladen werden, die nicht authentifiziert werden konnten.
; „Secure APT“ ist seit Debian 4.0 Bestandteil der Distribution.
* Secure APT sorgt für zusätzliche Sicherheit von Debian GNU/Linux-Systemen, indem starke Kryptografie und digitale Signaturen zum Verifizieren heruntergeladener Pakete verwendet werden.
* Das Programm <tt>apt-key</tt> wird genutzt, um dem Schlüsselring von <tt>apt</tt> neue Schlüssel hinzuzufügen.
* Standardmäßig wird nur der Schlüssel zum Signieren des Debian Archives aus dem Paket <tt>debian-archive-keyring</tt> berücksichtigt.
* In der Standardkonfiguration wird <tt>apt</tt> nun eine Warnung ausgeben, falls Pakete aus Quellen heruntergeladen werden, die nicht authentifiziert werden konnten.


Unabhängig davon, welches Programm Sie zur Installation benutzen - Sie müssen in jedem Fall auswählen, welche Pakete Sie installieren möchten. Dies ist bei Debian GNU/Linux keine leichte Aufgabe, denn mittlerweile umfasst die Distribution einige tausend Pakete! Um Ihnen die Auswahl zu erleichtern, wurden von den Entwicklern so genannte „ task“-Pakete zusammengestellt. Diese „Gruppierung“ von Paketen vereinfacht Ihnen die Selektion. Wählen Sie beispielsweise das Paket <tt>task-gnome-desktop</tt> aus, so werden alle nötigen Pakete für einen GNOME-Desktop ausgewählt und installiert. Weitere Informationen zu diesen Paketen finden Sie in [../../debiananwenderhandbuch/taskpakete.html „Taskpakete“ ].
; Paketeauwahl
Unabhängig davon, welches Programm Sie zur Installation benutzen - Sie müssen in jedem Fall auswählen, welche Pakete Sie installieren möchten.
* Dies ist bei Debian GNU/Linux keine leichte Aufgabe, denn mittlerweile umfasst die Distribution einige tausend Pakete! Um Ihnen die Auswahl zu erleichtern, wurden von den Entwicklern so genannte „ task“-Pakete zusammengestellt.
* Diese „Gruppierung“ von Paketen vereinfacht Ihnen die Selektion.
* Wählen Sie beispielsweise das Paket <tt>task-gnome-desktop</tt> aus, so werden alle nötigen Pakete für einen GNOME-Desktop ausgewählt und installiert.
* Weitere Informationen zu diesen Paketen finden Sie in [../../debiananwenderhandbuch/taskpakete.html „Taskpakete“ ].


<tt>apt-get</tt> oder <tt>gnome-apt</tt> oder auch das bereits erwähnte <tt>dselect</tt> können zum Auswählen und Installieren einzelner Pakete benutzt werden.
<tt>apt-get</tt> oder <tt>gnome-apt</tt> oder auch das bereits erwähnte <tt>dselect</tt> können zum Auswählen und Installieren einzelner Pakete benutzt werden.


Die Paketverwaltung unter Debian GNU/Linux stellt eines der Highlights dieser Distribution dar. Wir wollen hier nicht auf jedes Detail eingehen, aber trotzdem ein paar Informationen zu den grundsätzlichen Vorgängen bei der Installation eines Pakets festhalten.
; Die Paketverwaltung unter Debian GNU/Linux stellt eines der Highlights dieser Distribution dar
 
Informationen zu den grundsätzlichen Vorgängen bei der Installation eines Pakets
Jedes Programmpaket enthält in der Regel einige verschiedene Dateien, die zur Funktion dieses Programms benötigt werden. Hierzu gehören natürlich das Programm selbst, die Bibliotheken, Dateien mit Daten wie zum Beispiel Grafiken für Spiele, die Anleitung (Manpages) usw. Bei der Installation eines Programms muss sichergestellt sein, dass alle Dateien am richtigen Platz im Verzeichnisbaum installiert werden.


Wenn Sie später ein Programm wieder von Ihrem System entfernen wollen, ist es ebenfalls wichtig zu wissen, welche Dateien zu einem Programm gehören und wo sie sich befinden. Weiterhin ist festzustellen, ob Dateien installiert wurden, die mittlerweile von anderen Programmen benutzt werden. In diesem Fall darf das Paket unter Umständen nicht entfernt werden.
; Jedes Programmpaket enthält in der Regel einige verschiedene Dateien, die zur Funktion dieses Programms benötigt werden.
* Hierzu gehören natürlich das Programm selbst, die Bibliotheken, Dateien mit Daten wie zum Beispiel Grafiken für Spiele, die Anleitung (Manpages) usw.
* Bei der Installation eines Programms muss sichergestellt sein, dass alle Dateien am richtigen Platz im Verzeichnisbaum installiert werden.


Ebenso kann der Fall eintreten, dass ein Programm auf den neuesten Stand gebracht werden soll. Bei diesem Vorgang werden Dateien aktualisiert und eventuell auch einige Dateien gelöscht, die von der neuen Version nicht mehr benötigt werden. Auch dies muss so durchgeführt werden, dass nicht andere Programme danach nicht mehr funktionsfähig sind.
; Wenn Sie später ein Programm wieder von Ihrem System entfernen wollen, ist es ebenfalls wichtig zu wissen, welche Dateien zu einem Programm gehören und wo sie sich befinden.
* Weiterhin ist festzustellen, ob Dateien installiert wurden, die mittlerweile von anderen Programmen benutzt werden.
* In diesem Fall darf das Paket unter Umständen nicht entfernt werden.


Das Debian GNU/Linux-Paketsystem wacht über alle diese Vorgänge und hält Ihr System immer in einem benutzbaren Zustand.
;: Ebenso kann der Fall eintreten, dass ein Programm auf den neuesten Stand gebracht werden soll.
* Bei diesem Vorgang werden Dateien aktualisiert und eventuell auch einige Dateien gelöscht, die von der neuen Version nicht mehr benötigt werden.
* Auch dies muss so durchgeführt werden, dass nicht andere Programme danach nicht mehr funktionsfähig sind.


; Organisation der Pakete
; Das Debian GNU/Linux-Paketsystem wacht über alle diese Vorgänge und hält Ihr System immer in einem benutzbaren Zustand.


Debian GNU/Linux organisiert die Pakete in einer festgelegten Hierarchie. Unter anderem werden Bereiche mit allgemeiner, freier Software (main), die den DFSG (Debian Free Software Guidelines - [../../debiananwenderhandbuch/dfsg.html „Debian Free Software Guidelines“ ]) entspricht, und Bereiche mit Software, die nicht unter solchen freien Lizenzen steht (non-free), unterschieden. Als weiterer Bereich steht contrib zur Verfügung, hier finden sich Pakete mit freier Software, die aber auf nicht-freien Paketen aufbauen. Die Verantwortlichen für das Debian Projekt haben sich entschieden, den Bereich „non-free“ zukünftig nicht mehr zu unterstützen. Es wird versucht, die Autoren der Software-Pakete zu überzeugen, eine freie Lizenz zu verwenden. Gelingt dies nicht, so wird das entsprechende Paket in absehbarer Zeit nicht mehr auf den Debian Servern verfügbar sein.
==  Organisation der Pakete ==
; Debian GNU/Linux organisiert die Pakete in einer festgelegten Hierarchie
* Unter anderem werden Bereiche mit allgemeiner, freier Software (main), die den DFSG (Debian Free Software Guidelines - [../../debiananwenderhandbuch/dfsg.html „Debian Free Software Guidelines“ ]) entspricht, und Bereiche mit Software, die nicht unter solchen freien Lizenzen steht (non-free), unterschieden.
* Als weiterer Bereich steht contrib zur Verfügung, hier finden sich Pakete mit freier Software, die aber auf nicht-freien Paketen aufbauen.
* Die Verantwortlichen für das Debian Projekt haben sich entschieden, den Bereich „non-free“ zukünftig nicht mehr zu unterstützen.
* Es wird versucht, die Autoren der Software-Pakete zu überzeugen, eine freie Lizenz zu verwenden.
* Gelingt dies nicht, so wird das entsprechende Paket in absehbarer Zeit nicht mehr auf den Debian Servern verfügbar sein.


Die nächste Ebene beschreibt die Architektur, also die Prozessorfamilie, auf der die Binärpakete laufen. Auch die Sourcen (Quellcodes) zu den Paketen sind in dieser Ebene angesiedelt. In der letzten Ebene finden sich diverse Verzeichnisse, in denen die eigentlichen Pakete zu Gruppen, wie zum Beispiel „Games“ oder „X11“, zusammengefasst werden.
; Die nächste Ebene beschreibt die Architektur, also die Prozessorfamilie, auf der die Binärpakete laufen.
* Auch die Sourcen (Quellcodes) zu den Paketen sind in dieser Ebene angesiedelt.
* In der letzten Ebene finden sich diverse Verzeichnisse, in denen die eigentlichen Pakete zu Gruppen, wie zum Beispiel „Games“ oder „X11“, zusammengefasst werden.


; Release
==  Release ==
; Von Debian werden zu jedem Zeitpunkt vier Release-Varianten angeboten: Die zuletzt veröffentlichte Version heißt „stable“.
* Dort sind alle Pakete sehr gut getestet, und die jeweils aktuellsten Sicherheitsupdates sind sehr schnell verfügbar.
* Mit einer solchen „stable“-Version ist in etwa alle zwei Jahre zu rechnen.
* Aktualisiert wird diese Version durch „Release“-Versionen (Unterversionen wie beispielsweise 3.1 R2), die in unregelmäßigen Abständen herausgegeben werden.
* Sicherheitsupdates sind für diese Version sehr zeitnah verfügbar.
* Dieses stabile Release von Debian sollte als Basis für alle produktiven Systeme eingesetzt werden.


Von Debian werden zu jedem Zeitpunkt vier Release-Varianten angeboten: Die zuletzt veröffentlichte Version heißt „stable“. Dort sind alle Pakete sehr gut getestet, und die jeweils aktuellsten Sicherheitsupdates sind sehr schnell verfügbar. Mit einer solchen „stable“-Version ist in etwa alle zwei Jahre zu rechnen. Aktualisiert wird diese Version durch „Release“-Versionen (Unterversionen wie beispielsweise 3.1 R2), die in unregelmäßigen Abständen herausgegeben werden. Sicherheitsupdates sind für diese Version sehr zeitnah verfügbar. Dieses stabile Release von Debian sollte als Basis für alle produktiven Systeme eingesetzt werden.
; Unstable und Testing
Darüber hinaus gibt es zwei weitere Zweige, die zwar verfügbar, aber nicht vom Debian Team für den produktiven Betrieb freigegeben sind: „unstable“ (an diesem Release wird laufend weiterentwickelt) und „testing“, das der Sammelplatz für das nächste offizielle Release ist. „testing“ setzt sich aus Paketen zusammen, die nach 10 bis 14 Tagen im Zweig „unstable“ keine für das Release entscheidenden Fehler gezeigt haben und dann in den „testing“-Zweig übernommen werden.
* Die Pakete in „testing“ haben eine gute Stabilität und können für den laufenden Betrieb auf nicht geschäftskritischen Systemen eingesetzt werden.
* Hier sollte man aber auf kleinere Probleme und Ausfallzeiten gefasst sein.
* Sehr aktuelle Pakete finden Sie aber eher im „unstable“-Bereich.
* Sicherheitsupdates werden für diese Releases nicht garantiert.
* Häufig sind entsprechende Pakete verfügbar; verlassen Sie sich aber nicht darauf.


Darüber hinaus gibt es zwei weitere Zweige, die zwar verfügbar, aber nicht vom Debian Team für den produktiven Betrieb freigegeben sind: „unstable“ (an diesem Release wird laufend weiterentwickelt) und „testing“, das der Sammelplatz für das nächste offizielle Release ist. „testing“ setzt sich aus Paketen zusammen, die nach 10 bis 14 Tagen im Zweig „unstable“ keine für das Release entscheidenden Fehler gezeigt haben und dann in den „testing“-Zweig übernommen werden. Die Pakete in „testing“ haben eine gute Stabilität und können für den laufenden Betrieb auf nicht geschäftskritischen Systemen eingesetzt werden. Hier sollte man aber auf kleinere Probleme und Ausfallzeiten gefasst sein. Sehr aktuelle Pakete finden Sie aber eher im „unstable“-Bereich. Sicherheitsupdates werden für diese Releases nicht garantiert. Häufig sind entsprechende Pakete verfügbar; verlassen Sie sich aber nicht darauf.
; Experimental
Für einige Pakete wird darüber hinaus manchmal „Experimental“ benutzt.
* Dieser Zweig enthält neuere Software-Versionen, die jedoch sehr große Änderungen mit sich bringen.
* Beispielsweise werden dort sehr neue und aktuelle Software-Pakete in die Debian Distribution integriert, oder es werden größere Debian Pakete komplett neu strukturiert.
* Sie sollten diesen Zweig nur einsetzen, wenn Sie gute Kenntnisse über das Debian Paketmanagement haben (etwa nach der Lektüre dieses Buches <tt><nowiki>;-)</nowiki></tt>).
* Für diese Pakete gibt es keinen festgelegten Wert, wie sie in die Distribution aufgenommen werden.


Für einige Pakete wird darüber hinaus manchmal „Experimental“ benutzt. Dieser Zweig enthält neuere Software-Versionen, die jedoch sehr große Änderungen mit sich bringen. Beispielsweise werden dort sehr neue und aktuelle Software-Pakete in die Debian Distribution integriert, oder es werden größere Debian Pakete komplett neu strukturiert. Sie sollten diesen Zweig nur einsetzen, wenn Sie gute Kenntnisse über das Debian Paketmanagement haben (etwa nach der Lektüre dieses Buches <tt><nowiki>;-)</nowiki></tt>). Für diese Pakete gibt es keinen festgelegten Wert, wie sie in die Distribution aufgenommen werden.
Die vier Release-Varianten sind auf den Servern durch „Links“ mit den jeweiligen Release-Namen verbunden.
* So ist beispielsweise momentan, kurz nach der Release von „Sarge“, „stable“ ein Link auf „Sarge“, „testing“ ein Link auf „Etch“ und „unstable“ ist immer ein Link auf „sid“. „sid“ steht für „still in development“.


Die vier Release-Varianten sind auf den Servern durch „Links“ mit den jeweiligen Release-Namen verbunden. So ist beispielsweise momentan, kurz nach der Release von „Sarge“, „stable“ ein Link auf „Sarge“, „testing“ ein Link auf „Etch“ und „unstable“ ist immer ein Link auf „sid“. „sid“ steht für „still in development“.
#
 
<div >
  ftp> ls -l
  ftp> ls -l
  227 Entering Passive Mode (128,101,80,133,219,159)
  227 Entering Passive Mode (128,101,80,133,219,159)
Zeile 61: Zeile 107:
  drwxrwsr-x    5 1176    1176        4096 May 31 20:55 woody
  drwxrwsr-x    5 1176    1176        4096 May 31 20:55 woody
  drwxrwsr-x    5 1176    1176        57344 Jun 06 17:42 woody-proposed-updates
  drwxrwsr-x    5 1176    1176        57344 Jun 06 17:42 woody-proposed-updates
    </div>


Kurz vor einem neuen Release gibt es für kurze Zeit noch ein weiteres Release: „frozen“. Es stellt den eingefrorenen Zustand einer „testing“-Distribution dar, kurz bevor diese zu „stable“ wird. In einem „frozen“-Status, kurz vor der Freigabe eines neuen Release, wird kein neuer Code mehr akzeptiert. Es werden lediglich bei Bedarf Bugfixes eingepflegt. Es wird ein neuer Verzeichnisbaum im <tt>dists/</tt>-Verzeichnis angelegt und einem neuen Kodenamen zugeordnet. Die eingefrorene Distribution durchläuft nun einige Monate lang Tests mit zwischenzeitlichen Updates und Zwischenversionen, die „Test-Zyklen“ genannt werden.
; Frozen
 
Kurz vor einem neuen Release gibt es für kurze Zeit noch ein weiteres Release: „frozen“.
; Distribution
* Es stellt den eingefrorenen Zustand einer „testing“-Distribution dar, kurz bevor diese zu „stable“ wird.
* In einem „frozen“-Status, kurz vor der Freigabe eines neuen Release, wird kein neuer Code mehr akzeptiert.
* Es werden lediglich bei Bedarf Bugfixes eingepflegt.
* Es wird ein neuer Verzeichnisbaum im <tt>dists/</tt>-Verzeichnis angelegt und einem neuen Kodenamen zugeordnet.
* Die eingefrorene Distribution durchläuft nun einige Monate lang Tests mit zwischenzeitlichen Updates und Zwischenversionen, die „Test-Zyklen“ genannt werden.


==  Distribution ==
Die so genannten „Distributionen“ innerhalb der gesamten Debian GNU/Linux-Distribution bezeichnen verschiedene Bereiche, die sich durch die Lizenzen unterscheiden, unter denen die Pakete in diesen Bereichen stehen.
Die so genannten „Distributionen“ innerhalb der gesamten Debian GNU/Linux-Distribution bezeichnen verschiedene Bereiche, die sich durch die Lizenzen unterscheiden, unter denen die Pakete in diesen Bereichen stehen.


Zeile 72: Zeile 122:
|-
|-
|| '''Main'''
|| '''Main'''
|| Dies ist der Hauptbestandteil von Debian. Diese Pakete sind unter einem Copyright veröffentlicht, das eine freie Weiterverteilung ermöglicht, und enthalten den vollständigen Quellcode.
|| Dies ist der Hauptbestandteil von Debian.
* Diese Pakete sind unter einem Copyright veröffentlicht, das eine freie Weiterverteilung ermöglicht, und enthalten den vollständigen Quellcode.
|-
|-
|| '''Contrib'''
|| '''Contrib'''
|| Die Pakete in diesem Verzeichnis sind für sich frei, jedoch benötigen sie nicht-freie (Non-Free) Software oder Bibliotheken, um zu funktionieren. Sie können daher nicht in den Bereich „main“ von Debian GNU/Linux einfließen.
|| Die Pakete in diesem Verzeichnis sind für sich frei, jedoch benötigen sie nicht-freie (Non-Free) Software oder Bibliotheken, um zu funktionieren.
* Sie können daher nicht in den Bereich „main“ von Debian GNU/Linux einfließen.
|-
|-
|| '''Non-Free'''
|| '''Non-Free'''
|| Pakete in diesem Verzeichnis müssen nicht unbedingt Geld kosten, jedoch haben sie einige Bedingungen, die eine Weiterverteilung der Software einschränken. Beispielsweise kann ein Autor die Verbreitung der Software auf CD-ROM untersagen.
|| Pakete in diesem Verzeichnis müssen nicht unbedingt Geld kosten, jedoch haben sie einige Bedingungen, die eine Weiterverteilung der Software einschränken.
|-
* Beispielsweise kann ein Autor die Verbreitung der Software auf CD-ROM untersagen.
|| '''Non-US'''
|| Diese Pakete dürfen nicht aus den USA exportiert werden; es handelt sich meist um Verschlüsselungssoftware. Einige sind aufgrund der Lizenzen ebenfalls nicht-freie Software. Dieser Bereich wurde mit der Release von „Sarge“ (Debian Version 3.1) bereinigt und ist entfallen. Alle Lizenzen der Pakete wurden in Zusammenarbeit mit den Entwicklern angepasst, und die Pakete sind in den Bereich „main“ eingeflossen. Pakete, bei denen das nicht möglich war, wurden aus der Debian Distribution entfernt.
|-
|}
|}
; Architektur


==  Architektur ==
Hier finden Sie eine Übersicht einiger von Debian GNU/Linux unterstützten beziehungsweise in der Entwicklung befindlichen Architekturen.
Hier finden Sie eine Übersicht einiger von Debian GNU/Linux unterstützten beziehungsweise in der Entwicklung befindlichen Architekturen.


Bitte beachten Sie auch, dass nicht alle Architekturen auf CD-ROM im Handel erhältlich sind. Am einfachsten sind CDs für die i386-Architektur zu bekommen. Dies ist sowohl im Heimbereich als auch bei professionellen Anwendern die am weitesten verbreitete Hardware-Plattform.
Bitte beachten Sie auch, dass nicht alle Architekturen auf CD-ROM im Handel erhältlich sind.
* Am einfachsten sind CDs für die i386-Architektur zu bekommen.
* Dies ist sowohl im Heimbereich als auch bei professionellen Anwendern die am weitesten verbreitete Hardware-Plattform.


Eine komplette Übersicht finden Sie unter [http://www.debian.org/ports/ http://www.debian.org/ports/].
Eine komplette Übersicht finden Sie unter [http://www.debian.org/ports/ http://www.debian.org/ports/].
Zeile 95: Zeile 146:
|-
|-
|| '''Intel x86 / IA-32 (<tt>i386</tt>)'''
|| '''Intel x86 / IA-32 (<tt>i386</tt>)'''
|| Die erste Architektur und nicht direkt eine Portierung. Mit dieser Architektur begann alles. Linus Torvalds entwickelte auf Basis von Minix die ersten Zeilen Sourcecode zu Linux auf einem i386-Prozessor. Debian unterstützt alle IA-32-Prozessoren, hergestellt von Intel, AMD, Cyrix und weiteren Herstellern.
|| Die erste Architektur und nicht direkt eine Portierung.
* Mit dieser Architektur begann alles.
* Linus Torvalds entwickelte auf Basis von Minix die ersten Zeilen Sourcecode zu Linux auf einem i386-Prozessor.
* Debian unterstützt alle IA-32-Prozessoren, hergestellt von Intel, AMD, Cyrix und weiteren Herstellern.
|-
|-
|| '''Intel IA-64 (<tt>ia64</tt>)'''
|| '''Intel IA-64 (<tt>ia64</tt>)'''
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben. Dieses ist die Portierung auf Intels 64-Bit-Architektur.
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
* Dieses ist die Portierung auf Intels 64-Bit-Architektur.
|-
|-
|| '''S/390 (<tt>s390</tt>)'''
|| '''S/390 (<tt>s390</tt>)'''
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben. Dieses ist die Portierung auf IBM S/390-Server.
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
* Dieses ist die Portierung auf IBM S/390-Server.
|-
|-
|| '''DEC Alpha (<tt>alpha</tt>)'''
|| '''DEC Alpha (<tt>alpha</tt>)'''
|| Das erste Release erfolgte mit Debian 2.1. Eine der länger bestehenden Portierungen und ziemlich stabil.
|| Das erste Release erfolgte mit Debian 2.1.
* Eine der länger bestehenden Portierungen und ziemlich stabil.
|-
|-
|| '''ARM (<tt>arm</tt>)'''
|| '''ARM (<tt>arm</tt>)'''
Zeile 110: Zeile 167:
|-
|-
|| '''Motorola 68k (<tt>m68k</tt>)'''
|| '''Motorola 68k (<tt>m68k</tt>)'''
|| Das erste Release dieser Portierung erfolgte mit Debian 2.0. Der Debian m68k-Port läuft auf einer großen Bandbreite von Computern, die auf der Motorola 68k-Prozessorfamilie basieren - im Besonderen die Sun3-Workstation-Familie, die Apple Macintosh Personal-Computer und die Atari und Amiga Personal-Computer, aber auch einige aus dem Industriebereich stammenden VME-Bus-Boards.
|| Das erste Release dieser Portierung erfolgte mit Debian 2.0.
* Der Debian m68k-Port läuft auf einer großen Bandbreite von Computern, die auf der Motorola 68k-Prozessorfamilie basieren - im Besonderen die Sun3-Workstation-Familie, die Apple Macintosh Personal-Computer und die Atari und Amiga Personal-Computer, aber auch einige aus dem Industriebereich stammenden VME-Bus-Boards.
|-
|-
|| '''MIPS (<tt>mips</tt>)'''
|| '''MIPS (<tt>mips</tt>)'''
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben. Debian wird auf die MIPS-Architektur portiert, die in SGI-Computern (debian-mips - big-endian) und Digital Decstations (debian-mipsel - little-endian) verwendet wird.
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
* Debian wird auf die MIPS-Architektur portiert, die in SGI-Computern (debian-mips - big-endian) und Digital Decstations (debian-mipsel - little-endian) verwendet wird.
|-
|-
|| '''Motorola/IBM PowerPC (<tt>powerpc</tt>)'''
|| '''Motorola/IBM PowerPC (<tt>powerpc</tt>)'''
|| Diese Portierung läuft auf vielen Apple Macintosh PowerMac-Rechnern und kann auch auf den meisten Motorola-Computern laufen. Ältere Macintosh-Rechner benutzen die m68k-Prozessoren; diese werden nicht als PowerMac bezeichnet. Debian/PowerPC wurde mit Debian 2.2 (Potato) das erste Mal offiziell veröffentlicht. Die Portierung läuft auf vielen der Apple Macintosh PowerMac-Modelle, den CHRP- und den PReP-Rechnern.
|| Diese Portierung läuft auf vielen Apple Macintosh PowerMac-Rechnern und kann auch auf den meisten Motorola-Computern laufen. Ältere Macintosh-Rechner benutzen die m68k-Prozessoren; diese werden nicht als PowerMac bezeichnet.
* Debian/PowerPC wurde mit Debian 2.2 (Potato) das erste Mal offiziell veröffentlicht.
* Die Portierung läuft auf vielen der Apple Macintosh PowerMac-Modelle, den CHRP- und den PReP-Rechnern.
|-
|-
|| '''HP PA-RISC (<tt>hppa</tt>)'''
|| '''HP PA-RISC (<tt>hppa</tt>)'''
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben. Dieses ist eine Portierung auf die PA-RISC-Architektur von Hewlett-Packard, die sich in einem weit entwickelten Stadium befindet.
|| Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
* Dieses ist eine Portierung auf die PA-RISC-Architektur von Hewlett-Packard, die sich in einem weit entwickelten Stadium befindet.
|-
|-
|| '''Sun SPARC (<tt>sparc</tt>)'''
|| '''Sun SPARC (<tt>sparc</tt>)'''
|| Zum ersten Mal mit Debian 2.1 veröffentlicht. Diese Portierung läuft sowohl auf der SPARCstation-Familie von Workstations als auch auf einem Teil ihrer Nachfolger in der Sun4-Architektur.
|| Zum ersten Mal mit Debian 2.1 veröffentlicht.
* Diese Portierung läuft sowohl auf der SPARCstation-Familie von Workstations als auch auf einem Teil ihrer Nachfolger in der Sun4-Architektur.
|-
|-
|| '''Sun UltraSPARC (<tt>sparc64</tt>)'''
|| '''Sun UltraSPARC (<tt>sparc64</tt>)'''
|| Dies ist auch der Beginn einer Portierung auf die Sun UltraSPARC-(sun4u-) Workstation-Familie. Dieser 64-Bit-Prozessor hat den Vorteil der Rückwärtskompatibilität zu seinem Vorgänger, so dass die UltraSPARC-Portierung in der Lage sein wird, Sparc-Binärfiles auszuführen. Dieses Projekt braucht zurzeit Entwickler. Wenn Sie einen UltraSPARC-basierenden Computer haben und helfen möchten, senden Sie bitte eine E-Mail an die Liste unter <tt>debian-ultralinux@lists.debian.org</tt>, um Ihre Mitarbeit anzubieten.
|| Dies ist auch der Beginn einer Portierung auf die Sun UltraSPARC-(sun4u-) Workstation-Familie.
* Dieser 64-Bit-Prozessor hat den Vorteil der Rückwärtskompatibilität zu seinem Vorgänger, so dass die UltraSPARC-Portierung in der Lage sein wird, Sparc-Binärfiles auszuführen.
* Dieses Projekt braucht zurzeit Entwickler.
* Wenn Sie einen UltraSPARC-basierenden Computer haben und helfen möchten, senden Sie bitte eine E-Mail an die Liste unter <tt>debian-ultralinux@lists.debian.org</tt>, um Ihre Mitarbeit anzubieten.
|-
|-
|| '''Debian GNU/Hurd (<tt>hurd-i386</tt>)'''
|| '''Debian GNU/Hurd (<tt>hurd-i386</tt>)'''
|| GNU/Hurd ist ein völlig neues Betriebssystem, das von der GNU-Gruppe aufgebaut wird. In der Tat ist GNU/Hurd die letzte Komponente, die es möglich macht, ein komplettes GNU-Betriebssystem aufzubauen, und Debian GNU/Hurd wird ein solches (vielleicht sogar das erste) GNU-Betriebssystem sein. Das gegenwärtige Projekt ist auf der i386-Architektur aufgebaut, aber Sie können erwarten, dass die anderen wenig später folgen werden.
|| GNU/Hurd ist ein völlig neues Betriebssystem, das von der GNU-Gruppe aufgebaut wird.
* In der Tat ist GNU/Hurd die letzte Komponente, die es möglich macht, ein komplettes GNU-Betriebssystem aufzubauen, und Debian GNU/Hurd wird ein solches (vielleicht sogar das erste) GNU-Betriebssystem sein.
* Das gegenwärtige Projekt ist auf der i386-Architektur aufgebaut, aber Sie können erwarten, dass die anderen wenig später folgen werden.
|-
|-
|| '''Debian GNU/NetBSD (<tt>netbsd-i386</tt> und <tt>netbsd-alpha</tt>)'''
|| '''Debian GNU/NetBSD (<tt>netbsd-i386</tt> und <tt>netbsd-alpha</tt>)'''
|| Dies ist eine Portierung des Debian Betriebssystems inklusive apt, dpkg und GNU-Software auf den NetBSD-Kernel. Sie befindet sich im Augenblick in einem sehr vorläufigem Stadium, aber da NetBSD ein Produktionslevel-Kernel ist, sollte sich die Verwendbarkeit von Debian GNU/NetBSD sehr rasch entwickeln. Im Augenblick ist Debian GNU/NetBSD für Intel x86 am weitesten fortgeschritten, aber die Arbeit an der Unterstützung für Alpha-basierende Computer hat bereits begonnen.
|| Dies ist eine Portierung des Debian Betriebssystems inklusive apt, dpkg und GNU-Software auf den NetBSD-Kernel.
* Sie befindet sich im Augenblick in einem sehr vorläufigem Stadium, aber da NetBSD ein Produktionslevel-Kernel ist, sollte sich die Verwendbarkeit von Debian GNU/NetBSD sehr rasch entwickeln.
* Im Augenblick ist Debian GNU/NetBSD für Intel x86 am weitesten fortgeschritten, aber die Arbeit an der Unterstützung für Alpha-basierende Computer hat bereits begonnen.
|-
|-
|| '''Debian GNU/FreeBSD (<tt>freebsd-i386</tt>)'''
|| '''Debian GNU/FreeBSD (<tt>freebsd-i386</tt>)'''
|| Dies ist eine Portierung des Debian Betriebssystems auf den FreeBSD-Kernel. Sie befindet sich im Augenblick in einer Vorentwicklungsphase.
|| Dies ist eine Portierung des Debian Betriebssystems auf den FreeBSD-Kernel.
* Sie befindet sich im Augenblick in einer Vorentwicklungsphase.
|-
|-
|| '''Debian Beowulf'''
|| '''Debian Beowulf'''
|| Obwohl nicht wirklich eine Portierung, so wird Beowulf doch ein Ersatz für viele Großrechner in Forschung und Entwicklung sein. Deshalb scheint hier der richtige Platz zu sein, um es zu erwähnen. Dieses Projekt arbeitet daran, Beowulf-Cluster unter Debian laufen zu lassen.
|| Obwohl nicht wirklich eine Portierung, so wird Beowulf doch ein Ersatz für viele Großrechner in Forschung und Entwicklung sein.
* Deshalb scheint hier der richtige Platz zu sein, um es zu erwähnen.
* Dieses Projekt arbeitet daran, Beowulf-Cluster unter Debian laufen zu lassen.
|-
|-
|}
|}
; Gruppen


Jedes Paket der Debian Distribution kann vom Betreuer (Maintainer) einem bestimmten Bereich zugeordnet werden. Diese Bereiche beschreiben den hauptsächlichen Einsatzort bzw. den Einsatzbereich. Innerhalb eines Frontends zur Paketinstallation (beispielsweise <tt>dselect</tt>) können dann die Pakete entsprechend dieser Zuordnung ausgewählt werden.
==  Gruppen ==
Jedes Paket der Debian Distribution kann vom Betreuer (Maintainer) einem bestimmten Bereich zugeordnet werden.
* Diese Bereiche beschreiben den hauptsächlichen Einsatzort bzw.
* den Einsatzbereich.
* Innerhalb eines Frontends zur Paketinstallation (beispielsweise <tt>dselect</tt>) können dann die Pakete entsprechend dieser Zuordnung ausgewählt werden.


Diese Struktur lässt sich auf den FTP-Servern oder den Debian CD-ROMs nicht ohne Weiteres zurückverfolgen, wenn nach einem Paket gesucht wird. Die Bereiche sind in den Dateien <tt>Packages.gz</tt> vermerkt und werden vom Frontend auf die tatsächlichen Pfade umgesetzt. Die Pakete selbst befinden sich in einer einfachen Dateisystemstruktur, die wie folgt aufgebaut ist: <tt>/pool/main/a/paketname/paket.deb</tt>.
Diese Struktur lässt sich auf den FTP-Servern oder den Debian CD-ROMs nicht ohne Weiteres zurückverfolgen, wenn nach einem Paket gesucht wird.
* Die Bereiche sind in den Dateien <tt>Packages.gz</tt> vermerkt und werden vom Frontend auf die tatsächlichen Pfade umgesetzt.
* Die Pakete selbst befinden sich in einer einfachen Dateisystemstruktur, die wie folgt aufgebaut ist: <tt>/pool/main/a/paketname/paket.deb</tt>.


Doch nun zu den Bereichen:
Doch nun zu den Bereichen:
{|| class="wikitable sortable"
{|| class="wikitable sortable"
|-
|-
Zeile 187: Zeile 264:
|-
|-
|| '''Mail'''
|| '''Mail'''
|| Alles rund um E-Mail. Mailserver, Mailprogramme usw.
|| Alles rund um E-Mail.
* Mailserver, Mailprogramme usw.
|-
|-
|| '''Mathematics'''
|| '''Mathematics'''
Zeile 229: Zeile 307:
|-
|-
|}
|}
; Backports


Backporting (Rückportierungen) bezeichnet den Prozess der Rückportierung von Software-Paketen aus einem neueren Release in ein älteres Release. Es gibt zwei wesentliche Gründe dafür, Pakete aus anderen Releases zu portieren:
==  Backports ==
Backporting (Rückportierungen) bezeichnet den Prozess der Rückportierung von Software-Paketen aus einem neueren Release in ein älteres Release.
* Es gibt zwei wesentliche Gründe dafür, Pakete aus anderen Releases zu portieren:


Durch den langen Release-Zyklus der stabilen Debian Version ist es manchmal wünschenswert, auf Software-Pakete aus „testing“ oder „unstable“ zuzugreifen. Dies ist leider nicht direkt ohne Weiteres möglich, da Abhängigkeiten zwischen den Paketen nicht erfüllt werden. Mitunter sind beispielsweise Bibliotheken nicht mehr in den benötigten Versionen in einer neueren Release vorhanden.
Durch den langen Release-Zyklus der stabilen Debian Version ist es manchmal wünschenswert, auf Software-Pakete aus „testing“ oder „unstable“ zuzugreifen.
* Dies ist leider nicht direkt ohne Weiteres möglich, da Abhängigkeiten zwischen den Paketen nicht erfüllt werden.
* Mitunter sind beispielsweise Bibliotheken nicht mehr in den benötigten Versionen in einer neueren Release vorhanden.


Auch kann eine individuelle Konfiguration bei der Übersetzung bestimmter Software-Pakete gewünscht sein. Hierfür ist aber nur in wenigen Fällen ein wirklicher Backport notwendig, es kann auch auf die Version aus dem verwendeten Release zurückgegriffen werden.
Auch kann eine individuelle Konfiguration bei der Übersetzung bestimmter Software-Pakete gewünscht sein.
* Hierfür ist aber nur in wenigen Fällen ein wirklicher Backport notwendig, es kann auch auf die Version aus dem verwendeten Release zurückgegriffen werden.


Detaillierte Informationen darüber, welche Schritte für das Backporting notwendig sind, finden Sie im [http://www.debianhowto.de/de:howtos:woody:backporting Backporting-HOWTO].
Detaillierte Informationen darüber, welche Schritte für das Backporting notwendig sind, finden Sie im [http://www.debianhowto.de/de:howtos:woody:backporting Backporting-HOWTO].


==== Adept Manager ====
Der Adept Manager richtet sich an erfahrenere Anwender und ist ein Programm zur grafischen Paketverwaltung unter [../../../../../../KDE Kubuntu/KDE]. Es dient als Oberfläche für [../../../../../../apt-get APT], mit der Aufgabe, die Paketverwaltung komfortabel zu gestalten.
Für Einsteiger gibt es zudem zum Installieren neuer Programme den [../../../../../../Anwendungen_hinzuf%25C3%25BCgen%23KDE Adept Installer] und zum Aktualisieren des Systems den [../../../../../../Automatische_Updates%23adept_updater Adept Updater].
Der Adept Manager befindet sich im K-Menü unter * "''System -> Adept Manager - Paketverwaltung''"
Zum Start muss das [../../../../../../sudo Passwort] eingegeben werden. So wird die unbefugte oder unbeabsichtigte Installation oder Deinstallation von Programmen verhindert.
; Programme installieren
[[Image:Grafik5.png|right]]Ein Programm zu installieren ist eigentlich ganz leicht: Kennt man den Namen des Paketes, kann man diesen oben in das Suchfeld eintippen. Die Suche startet schon mit dem ersten eingegebenen Buchstaben und verfeinert sich mit jedem weiteren. Sollte das Paket wider Erwarten nicht gefunden werden, muss man eventuell noch weitere [[#Paketquellen|Paketquellen]] freischalten.
In der Liste im unteren Bereich kann man durch einen Klick auf den Paketnamen bzw. den blauen Pfeil am linken Rand weitere Informationen zum Paket anschauen. Möchte man das Paket installieren, so klickt man auf die Schaltfläche "''Installation anfordern''". Alternativ kann man auch mit der rechten Maustaste ein Paket auswählen und im Kontextmenü "''Request Install"'' auswählen. Alle notwendigen Abhängigkeiten werden damit automatisch zur Installation markiert.
Zur Installation der vorgemerkten Pakete klickt man in der Symbolleiste auf "''Änderungen anwenden''". Möchte man sich vergewissern, dass auch die richtigen Pakete installiert bzw. entfernt werden, sollte man in der Symbolleiste auf "''Änderungsvorschau''" klicken.
Achtung!
Es kann auch vorkommen, dass Pakete entfernt werden sollen, weil diese zum Beispiel in Konflikt mit einem anderen stehen. Man sollte sich also genau durchlesen, was in diesem Dialog steht!
; Pakete neuinstallieren
Möchte man ein bereits installiertes Paket neuinstallieren, kann man dies mit "''Rechtsklick''" -> "''Request Reinstall"'' tun.
; Pakete entfernen
Um ein Paket zu entfernen, klickt man dieses einfach in der Übersichtsliste an und wählt dann die Schaltfläche ''"Entfernung anfordern"'' oder alternativ per ''Rechtsklick'' im Kontextmenü ''"Request Removal"''.
; Hinweis
Wichtig: Beim einfachen Entfernen eines Paketes bleiben Konfigurationsdateien - z. B. in '''/etc''' - zurück. Möchte man dies verhindern, entfernd man das Paket mit "''Rechtsklick''" -> "''Request Purging"''. Dies löscht alles, inklusive der Konfigurationsdateien. Dateien in den [../../../../../../Homeverzeichnis Homeverzeichnissen] der Benutzer bleiben davon natürlich unberührt. Die Paketverwaltung wird nie Daten aus '''/home''' löschen!
; Automatische Abhängigkeiten entfernen
Im Gegensatz zu [../../../../../../aptitude aptitude] und [../../../../../../apt-get apt-get] werden im Adept Manager automatisch installierte, abhängige Pakete nicht entfernt, wenn man das Ursprungspaket deinstalliert. Hier kann man sich aber helfen, indem man das entsprechende Paket in der Paketliste anklickt und auf die Schaltfläche ''"Details"'' betätigt. Unter dem Reiter ''"Paketbeziehungen"'' werden dort alle Pakete aufgelistet, mit denen das Ursprungspaket in Beziehung steht. Auf diese Art und Weise kann man nachverfolgen, welche Pakete als Abhängigkeiten zusätzlich installiert wurden und sie manuell entfernen.
[[Image:Grafik4.png|right|top]]'''Defekte Pakete reparieren'''
Ab und zu kann es passieren, dass "kaputte" Pakete gemeldet werden, wenn man ein Paket manuell installiert ohne dessen Abhängigkeiten zu erfüllen. In diesem Fall sucht man das Paket heraus (Bei ''"Status"'' erscheint "KAPUTT"!) und klickt auf ''"Installation anfordern"''. Sollte sich der Status des Paketes nicht ändern, so konnten nicht alle Abhängigkeiten aufgelöst werden. Hier muss man entweder die notwendigen Paketquellen freischalten oder das Paket wieder entfernen.
; Paketquellen
Die Paketquellen kann man im Adept Manager über das Menü ''"Adept -> Paketquellen verwalten"'' konfigurieren.
Allgemeine Informationen zu den Paketquellen findet man [../../../../../../Paketquellen hier]. Diesen Artikel sollte man sich vor dem Fortfahren durchgelesen haben.
; Standardquellen nutzen
Die Standardquellen werden im Fenster für die Paketverwaltung über den Reiter "''Software von Kubuntu''" konfiguriert. Nach der Installation sind die Quellen für ''main'', ''restricted'', ''universe'' und ''multiverse'' schon eingetragen und seit Feisty auch aktiviert. Möchte man dies ändern, können die Quellen einfach deaktiviert werden, indem man das Häkchen beim entsprechenden Eintrag entfernt. Wenn Änderungen vorgenommen wurden, wird man nach dem Schließen des Fensters aufgefordert, die Paketquellen neu einzulesen, was man mit einem Klick auf ''"Neu laden"'' auch tun sollte. Ansonsten kann dies jeder Zeit mit einem Klick auf ''"Aktualisierungen holen"'' nachgeholt werden.
; Experten-Info:
Man kann auf hier auch Ubuntu Source-Paketquellen über den Punkt "''Quelltext''" aktivieren, was [../../../../../../sources.list hier] genauer erklärt ist, da man diese Quellpakete nur in der Konsole herunterladen kann.
; Weitere Paketquellen hinzufügen
Gelegentlich wird in Wikiartikeln Software aus weiteren Paketquellen benötigt. Diese Paketquellen sind z.B. in der folgenden Form angegeben:
<div >deb http://archive.czessi.net/ubuntu dapper main restricted universe multiverse</div>Warnung vor Paketquellen!
Zusätzliche [../../../../../../Fremdquellen%23Fremdquellen Fremdquellen] können das System gefährden. Um diese Quelle beispielsweise einzufügen, öffnet man wie bereits beschrieben das Fenster für die Paketverwaltung und geht zum Reiter ''"Third-Party Software"''. Dort klickt man auf ''"Hinzufügen"'' und gibt die gewünschte Paketquelle ein.
Nachdem sie eingetragen wurden, sind die Fremdquellen automatisch aktiviert und können, genau wie die Standardquellen auch, wieder deaktiviert werden, indem man das entsprechende Häkchen entfernt. Ebenso wird man nach dem Schließen des Fensters aufgefordert, die Paketquellen neu einzulesen.
; Quelle als vertrauenswürdig einstufen
Wenn man bei der Paketinstallation aus Fremdquellen nicht immer eine Warnmeldung sehen möchte, dass die Quelle nicht authentifiziert werden kann, empfiehlt es sich diese als vertrauenswürdig einzustufen. Dazu gibt es in den meisten Wiki-Anleitungen (oder alternativ auf den Webseiten der Betreuer) eine GPG-Schlüsseldatei, die man einfach nur herunterladen muss. Wenn vorhanden, können heruntergeladene Authentisierungsschlüssel der neuen Quelle im Fenster für die Paketverwaltung bei dem Reiter "''Authentication"'' mit "''Import Key File"'' hinzugefügt werden. In der Regel wird dies aber über einen [../../../../../../Terminal Terminal] gemacht. Zudem können hier bereits authentisierte Schlüssel entfernt und die Standardeinstellungen (d. h., dass nur die Standardquellen authentisiert sind) über "''Restore Defaults"'' wieder hergestellt werden.
; CD/DVD als Paketquelle hinzufügen
Um eine CD/DVD als Paketquelle hinzuzufügen, öffnet man wie bereits beschrieben das Fenster für die Paketverwaltung und geht zum Reiter ''"Third-Party Software"''. Dann legt man die CD ein, die eingelesen werden soll und klickt auf die Schaltfläche ''"CD-ROM hinzufügen"''.
Es ist kein Problem mehrere CD-Quellen einzutragen, auch wenn man nur ein CD-Laufwerk besitzt. Bei Paketen, die auf einer anderen CD liegen, wird man aufgefordert, diese einzulegen.
; Updates
Um die Handhabung von Kubuntu mit Updates einzustellen, öffnet man wie bereits beschrieben das Fenster für die Paketverwaltung und geht zum Reiter ''"Updates"''.
; Auswahl der Updates
Unter ''"Aktualsierungen für Kubuntu"'' kann man einstellen, welche Updates berücksichtigt werden sollen. Neben wichtigen Sicherheitsaktualisierungen und empfohlen Updates können auch vorab veröffentlichte und nicht unterstütze Updates heruntergeladen werden.
Achtung!
Vorab veröffentlichte und nicht unterstütze Updates können die Stabilität des System gefährden!
; Automatische Updates
Unter ''"Automatic Updates"'' kann man das Verhalten des [../../../../../../Automatische_Updates%23adept_updater Adept Updaters] einstellen. Wenn das Häkchen bei "''Check for Updates"'' entfernt, wird der Adept Updater deaktiviert. Außerdem kann man die Häufigkeit bestimmen, mit der nach neuen Updates gesucht wird. Darunter kann eingestellt werden, wie mit den gefundenen Updates umgegangen werden soll. Man hat drei Optionen:
{|| class="wikitable sortable"
|-
| colspan="2" | '''Automatic Updates'''
|-
|| '''Option'''
|| '''Beschreibung'''
|-
|| ''"Install security updates without confirmation"''
|| Sicherheitsupdates werden hiermit automatisch ohne Nachfrage installiert.
|-
|| ''"Download all updates in the background"''
|| Hiermit werden alle Updates automatisch im Hintergrund herunterladen.
|-
|| ''"Only notify about available updates"''
|| Bei neuen Updates wird man nur über den Adept Notifier hingewiesen.
|-
|}
; Was der Adept Manager nicht kann
Leider fehlen dem Adept Manager im Vergleich zu [../../../../../../Synaptic Synaptic] einige Features. So kann man keine Versionen eines Paketes sperren oder erzwingen, hier muss man sich mit [../../../../../../Apt-Pinning Apt-Pinning] behelfen. Außerdem können Pakete nicht konfiguriert werden, heruntergeladene Pakete kann man nicht automatisch entfernen lassen und man kann keine Paketlisten erstellen. Hier muss man entweder [../../../../../../APT APT] über einen [../../../../../../Terminal Terminal] bedienen oder man nutzt einfach Synaptic. Nach der Installation befindet es sich im K-Menü unter "''System -> Synaptic-Paketverwaltung''"
==== aptitude ====
<tt>aptitude</tt> verfolgt eine etwas andere Philosophie als <tt>dselect</tt>. Es wird streng nach installierten, nicht installierten, virtuellen Paketen und Paketen, die in einer neueren Version vorliegen, unterschieden. Innerhalb dieser vier Gruppen werden alle Pakete in einer Baumstruktur dargestellt, die auch die Verzeichnisstruktur innerhalb des Debian Archives darstellt, also beispielsweise: <tt>main/admin</tt> oder <tt>non-US/non-free</tt>.
Sie können einzelne Teile der Struktur aufklappen und in den einzelnen Bereichen Pakete auswählen.
[[Image:Grafik3.png|right|middle]]
Bei <tt>aptitude</tt> decken sich die meisten Tastaturbelegungen mit <tt>dselect</tt>.
{|| class="wikitable sortable"
|-
|| '''PFEIL-UNTEN '''
|| Bewegt den Auswahlbalken zum nächsten Eintrag.
|-
|| '''PFEIL-OBEN '''
|| Bewegt den Auswahlbalken zum vorherigen Eintrag.
|-
|| '''RETURN '''
|| Klappt ein Verzeichnis auf/zu.
|-
|| '''^'''
|| Springt zum Verzeichnis, zu dem das Paket gehört.
|-
|| '''+'''
|| Markiert ein Paket zur Installation.
|-
|| '''-'''
|| Markiert ein Paket zum Löschen.
|-
|| '''i'''
|| Zeigt die Beschreibung des Pakets an.
|-
|| '''d'''
|| Zeigt die Abhängigkeiten des Pakets an.
|-
|| '''v'''
|| Zeigt die verfügbaren Versionen des Pakets an.
|-
|| '''u'''
|| Aktualisiert die Liste der verfügbaren Pakete.
|-
|| '''g'''
|| Startet die Installation der ausgewählten Pakete.
|-
|}
Die verschiedenen Hintergrundfarben innerhalb des Programms haben folgende Bedeutung:
{|| class="wikitable sortable"
|-
|| '''schwarz'''
|| „Normalzustand“ eines Pakets. Beim nächsten Installationsdurchlauf wird dieses Paket nicht verändert. Fett geschriebene Pakete sind bereits installiert.
|-
|| '''rot'''
|| Das Paket ist in einem unbrauchbaren Zustand oder kann nicht installiert werden.
|-
|| '''blau'''
|| Das Paket wird mit einer neueren Programmversion aktualisiert.
|-
|| '''weiß'''
|| Dieses Paket könnte aktualisiert werden, es wurde aber auf dem aktuellen Stand fixiert (hold).
|-
|| '''grün'''
|| Das Paket wird installiert.
|-
|| '''magenta'''
|| Das Paket wird gelöscht.
|-
|}
Neben einer Benutzeroberfläche bietet <tt>aptitude</tt> auch die Möglichkeit, verschiedenste Aktionen auf der Kommandozeile auszuführen. Die Syntax ist dabei wie folgt definiert:
<div >aptitude [Optionen] <Aktion> ...</div>
Wird beim Aufruf von <tt>aptitude</tt> auf der Komandozeile keine Aktion angegeben, so startet <tt>aptitude</tt> im interaktiven Modus.
Aktionen beim Start von <tt>aptitude</tt> können sein:
; Aktionen
{|| class="wikitable sortable"
|-
|| <tt>'''install</tt> '''
|| Installiere/aktualisiere Pakete.
|-
|| <tt>'''remove</tt> '''
|| Entferne Pakete.
|-
|| <tt>'''purge</tt> '''
|| Entferne Pakete und ihre Konfiguration.
|-
|| <tt>'''hold</tt> '''
|| Pakete auf den Status „halten“ setzen.
|-
|| <tt>'''unhold</tt> '''
|| Entfernt den Status „halten“ des angegebenen Paketes.
|-
|| <tt>'''markauto</tt> '''
|| Pakete als automatisch installiert markieren.
|-
|| <tt>'''unmarkauto</tt> '''
|| Pakete als manuell installiert markieren.
|-
|| <tt>'''update</tt> '''
|| Neue Listen neuer/aktualisierbarer Pakete laden.
|-
|| <tt>'''upgrade</tt> '''
|| Sicheres Upgrade durchführen.
|-
|| <tt>'''dist-upgrade</tt> '''
|| Upgrade durchführen, dabei - wenn notwendig - Pakete installieren/entfernen.
|-
|| <tt>'''search</tt> '''
|| Pakete nach Namen oder Ausdruck suchen.
|-
|| <tt>'''show</tt> '''
|| Gibt detaillierte Informationen zu dem Paket aus.
|-
|| <tt>'''clean</tt> '''
|| Heruntergeladene Pakete löschen.
|-
|| <tt>'''autoclean</tt> '''
|| Alte heruntergeladene Pakete löschen.
|-
|| <tt>'''download</tt> '''
|| Die <tt>.deb</tt>-Datei eines Pakets herunterladen.
|-
|}
Darüber hinaus versteht <tt>aptitude</tt> die folgenden Optionen beim Aufruf auf der Kommandozeile. Es ist nicht zwingend notwendig, <tt>aptitude</tt> mit dem Frontend zu verwenden.
; Optionen
{|| class="wikitable sortable"
|-
|| <tt>'''-h</tt> '''
|| Eine kurze Hilfe zu <tt>aptitude</tt>.
|-
|| <tt>'''-s</tt> '''
|| Aktionen simulieren, aber nicht wirklich durchführen.
|-
|| <tt>'''-d</tt> '''
|| Pakete nur herunterladen, nichts installieren oder entfernen.
|-
|| <tt>'''-P</tt> '''
|| Zur Bestätigung nachfragen.
|-
|| <tt>'''-y</tt> '''
|| Annehmen, dass die Antwort zu einfachen Ja/nein-Fragen „ja“ ist.
|-
|| <tt>'''-F format</tt> '''
|| Format für die Suchergebnisse angeben.
|-
|| <tt>'''-O order</tt> '''
|| Wie die Suchergebnisse sortiert werden sollen.
|-
|| <tt>'''-w breite</tt> '''
|| Die Breite für die Formatierung der Suchergebnisse.
|-
|| <tt>'''-f</tt> '''
|| Aggressiv versuchen, kaputte Pakete trotzdem zu installieren.
|-
|| <tt>'''-V</tt> '''
|| Anzeigen, welche Version eines Pakets installiert wird.
|-
|| <tt>'''-D</tt> '''
|| Abhängigkeiten automatisch veränderter Pakete anzeigen.
|-
|| <tt>'''-Z</tt> '''
|| Größenveränderung der einzelnen Pakete anzeigen.
|-
|| <tt>'''-t release</tt> '''
|| Release, aus dem Pakete installiert werden sollen.
|-
|| <tt>'''--with(out)-recommends</tt>, '''
|| Beeinflusst, ob oder ob nicht Empfehlungen (Vorschläge) wie starke Abhängigkeiten gehandhabt werden.
|-
|| <tt>'''-S fname</tt> '''
|| die erweiterten Aptitude-Statusinformationen aus der Datei <tt>fname</tt> laden.
|-
|| <tt>'''-u</tt> '''
|| Neue Paketlisten beim Start laden.
|-
|| <tt>'''-i</tt> '''
|| Installationslauf am Anfang durchführen.
|-
|}
Eine sehr nützliche Option von <tt>aptitude</tt> ist die Möglichkeit, zu einem Paket auch die empfohlenen (recommended) Pakete zu installieren. Hierbei werden die beiden Optionen <tt>install</tt> und <tt>--with[out]-recommends</tt> kombiniert.
Beachten Sie, dass dies nur bei noch nicht installierten Paketen funktioniert und nicht bei Paketen, von denen bereits Teile installiert sind.
Hier zunächst ein Beispiel für eine einfache Installation eines Pakets ohne die empfohlenen Pakete:
<div >wasabi:~# aptitude install --without-recommends minicom
Reading Package Lists... Done
Building Dependency Tree
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following NEW packages will be installed:
  minicom
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 280kB of archives. After unpacking 922kB will be used.
Writing extended state information... Done
Get:1 ftp://ftp.de.debian.org sarge/main minicom 2.1-7 [280kB]
86% [1 minicom 241920/280kB 86%]
...</div>
Es wird ausschließlich das Paket <tt>minicom</tt> installiert. Dies Verhalten entspricht dem Kommando <tt>apt-get install minicom</tt>.
<div >wasabi:~# apt-get install minicom
Reading Package Lists... Done
Building Dependency Tree... Done
Recommended packages:
lrzsz
The following NEW packages will be installed:
minicom
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 280kB of archives.
After unpacking 922kB of additional disk space will be used.
Get:1 ftp://ftp.de.debian.org sarge/main minicom 2.1-7 [280kB]
88% [1 minicom 247680/280kB 88%]
...</div>
Das Paket empfiehlt aber auch das Paket <tt>lrzsz</tt>, das normalerweise durch <tt>aptitude</tt> automatisch mitinstalliert wird.
<div >wasabi:~# aptitude install minicom
Reading Package Lists... Done
Building Dependency Tree
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following NEW packages will be automatically installed:
  lrzsz
The following NEW packages will be installed:
  lrzsz minicom
0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 373kB of archives. After unpacking 1111kB will be used.
Do you want to continue? [Y/n/?]
...</div>
==== Advanced Package Tool (APT) ====
APT („Advanced Package Tool“) stellt die nächste Generation der Debian GNU/Linux-Paketverwaltung dar.
In diesem Abschnitt wird zunächst auf die Konfiguration und Benutzung von Kommandozeilentools wie <tt>apt</tt> und <tt>dpkg</tt> sowie deren Verwandten eingegangen. Später werden dann auch grafische Frontends zur Paketverwaltung beschrieben.
; Kommandovervollständigung
In der unter Linux verwendeten Shell <tt>bash</tt> lassen sich teilweise eingegebene Befehlsnamen durch Drücken der '''TAB'''-Taste vervollständigen. Zunächst funktioniert das ausschließlich für den Programmnamen und nicht für Kommandos und Optionen.
Mit dem Kommando <tt>source /etc/bash_completion</tt> können einige weitere Makros für die Shell geladen werden. Danach ist es möglich, auch Optionen von Befehlen automatisch zu vervollständigen (tippen Sie beispielsweise <tt>dpkg -</tt>'''TABTAB''', so werden alle Optionen zum Befehl <tt>dpkg</tt> angezeigt). Dies funktioniert natürlich nicht nur mit Befehlen zur Verwaltung von Debian Paketen, sondern auch mit jedem anderen Befehl.
Darüber hinaus ist es möglich, auch Paketnamen, beispielsweise bei der Installation, zu vervollständigen. Tippen Sie hierzu: <tt>apt-get install im </tt>'''TABTAB''', so werden alle verfügbaren Pakete angezeigt, die mit „im“ beginnen.
; Die Datei sources.list
<div >Wenn Sie APT bereits über das Programm <tt>dselect</tt> als Installationsmethode benutzt haben, so haben Sie wahrscheinlich bereits APT an Ihre Bedürfnisse angepasst. Hier noch einige weitergehende Informationen zu APT:</div>
APT steht für „ Advanced Package Tool“, ein Programm also, das den Systemadministrator bei der Installation und Verwaltung von Programmen unterstützen soll. Der erste Schritt zur Benutzung von APT ist die Anpassung der Konfigurationsdatei <tt>/etc/apt/sources.list</tt> . In dieser Datei befinden sich die Informationen, von welcher Quelle die Pakete geholt werden sollen. APT unterstützt eine große Zahl verschiedener Installationsquellen. Momentan sind dies: <tt>cdrom</tt>, <tt>file</tt>, <tt>http</tt> und <tt>ftp</tt>. Jede dieser Quellen wird in einer einzelnen Zeile in der Datei beschrieben. Dabei wird auch die Reihenfolge berücksichtigt; weiter oben stehende Einträge haben eine höhere Priorität.
Das Format der Einträge lässt sich wie folgt beschreiben:
<div >deb uri distribution [component1] [component2] [...] </div>
Ein Eintrag könnte also wie folgt aussehen:
<div >deb ftp://ftp.debian.org/debian stable main </div>
In der ersten Spalte findet sich der Hinweis auf die Art der Quelle. Mögliche Werte sind hier <tt>deb</tt> für Debian Pakete im Binärformat (dies ist der gebräuchliste Wert) oder aber <tt>deb-src</tt> für Pakete, die im Quellcode vorliegen. Einträge der letzteren Art benötigt man beispielsweise, um ein Paket aus den Quellpaketen neu zu übersetzen.
Das Feld <tt>uri</tt> beschreibt die Installationsquelle und den Pfad zum „root“-Verzeichnis der Debian Distribution. Auf einer CD-ROM und auf vielen Debian FTP-Servern ist der Pfad im Normalfall das Verzeichnis <tt>/debian</tt> .
Mit dem Feld <tt>distribution</tt> stellen Sie die gewünschte Version ein, die Sie installieren möchten. Normalerweise wird man sich zwischen <tt>stable</tt> für die aktuelle, stabile Version oder <tt>unstable</tt> (für die Entwicklerversion) sowie <tt>testing</tt>, (die nächste zu veröffentlichende Version) entscheiden. Wie schon am Anfang dieses Buches beschrieben, bekommt jede Debian Version einen Namen. Sie können diesen Namen auch hier einsetzen, also <tt>Woody</tt> für die Version 3.0 oder <tt>Sarge</tt> für die Version 3.1 bzw. <tt>sid</tt> für die jeweils in Entwicklung befindlichen aktuellsten Pakete.
Die Felder „component“ werden mit den einzelnen Bereichen der Distribution gefüllt. Hier können beispielsweise <tt>main</tt>, <tt>contrib</tt>, <tt>non-free</tt>, <tt>non-US</tt> (dieser Zweig ist ab Debian Sarge nicht mehr vorhanden) stehen. Zulässig sind einer oder mehrere Einträge, die durch Leerzeichen voneinander getrennt werden.
; Genauere Informationen zu den Installationsquellen
{|| class="wikitable sortable"
|-
|| '''file'''
|| benutzt ein Verzeichnis als Quelle für die Pakete. Dies kann ein lokales oder ein per NFS gemountetes Verzeichnis sein.
|-
|| '''Cdrom'''
|| benutzt ein lokal installiertes CD-ROM-Laufwerk als Installationsquelle. Wenn die Distribution auf mehreren CDs vorliegt, wird auch dies unterstützt. Benutzen Sie das Programm <tt>apt-cdrom</tt>, um die nötigen Einträge in der Datei <tt>/etc/apt/sources.list</tt> vorzunehmen oder benutzen Sie das Programm <tt>apt-setup</tt>.
|-
|| '''Http'''
|| benutzt einen HTTP-Server als Installationsquelle. Wenn die Shell-Umgebungsvariable <tt>$http_proxy</tt> gesetzt ist (im Format: <tt>http://server:port/</tt> ), so wird diese anstelle einer direkten Verbindung zum Server benutzt. Sie können auch Proxy-Server benutzen, die eine Authentifizierung verlangen. Hierzu ist der Proxy im Format: <tt>http://user:pass@server:port/</tt> anzugeben. Bitte beachten Sie, dass die Benutzernamen und Passwörter auf diesem Wege unverschlüsselt übertragen werden.
|-
|| '''Ftp'''
|| stellt sicher die am häufigsten verwendete Methode für APT dar. Die Daten werden per FTP (File Transfer Protocol) auf den Rechner übertragen. Ein Beispiel finden Sie weiter unten.
|-
|| '''Copy'''
|| Diese Methode ist identisch mit der Methode „file“, mit dem Unterschied, dass die Pakete vor der Installation in das Verzeichnis <tt>/var/apt/cache/archives/</tt> kopiert werden. Dies kann zum Beispiel auf Systemen Sinn machen, die keine Verbindung zum Netz haben und per ZIP-Medium aktualisiert werden sollen.
|-
|}
Hier nun einige Beispiele. Denken Sie daran, dass Sie durchaus mehrere dieser Einträge in der Konfigurationsdatei gleichzeitig verwenden können.
<div >deb http://www.debian.org/archive stable main contrib </div>
Ein solcher Eintrag benutzt das Archiv auf [http://www.debian.org/ http://www.debian.org] mit den Bereichen <tt>stable/main</tt> und <tt>stable/contrib</tt>.
Folgender Eintrag holt die Dateien via FTP aus dem Verzeichnis <tt>/debian</tt>. Es wird die noch nicht fertige („unstable“) Version von Debian GNU/Linux benutzt und auf die Bereiche main, contrib und non-free zugegriffen:
<div >deb ftp://ftp.debian.org/debian unstable main contrib non-free </div>
Nochmal ein ähnlicher Eintrag, diesmal für die stabile Version und lediglich den Bereich <tt>main</tt>.
<div >deb ftp://ftp.debian.org/debian stable main </div>
Wenn Sie die beiden vorhergehenden Zeilen in Ihrer Konfiguration einsetzen, werden beide Zeilen in einem FTP-Zugriff bearbeitet.
<div >deb file:/home/fr/debian stable main contrib non-free </div>
Ein solcher Eintrag benutzt eine lokale Kopie der Daten auf der Festplatte. Dies kann auch ein per NFS gemountetes Verzeichnis sein.
; Paketbeschreibungen
Zu jedem Paket existiert eine Beschreibung, jeweils als Kurzbeschreibung in einer Zeile und als ausführliche Beschreibung in mehreren Sätzen. Diese Beschreibungen sind in den <tt>Package.gz</tt>-Dateien auf den Debian Spiegeln abgelegt und zunächst ausschließlich in englischer Sprache verfügbar.
Das „Debian Description Translation Project“ (DDTP, [http://ddtp.debian.org/ http://ddtp.debian.org/]) übersetzt diese Paketbeschreibungen in verschiedene Sprachen. Um die übersetzten Paketbeschreibungen zu nutzen, muss eine Anpassung an der Datei <tt>/etc/apt/sources.list</tt> vorgenommen werden. Dort ist der Eintrag für das verwendete Release von Debian durch einen entsprechenden Eintrag des DDTP-Servers zu ersetzen. So wird beispielsweise aus
<div >deb ftp://ftp.de.debian.org/debian sarge main </div>
der Eintrag:
<div >deb http://ddtp.debian.org/aptable de/sarge main</div>
Nach dem Ausführen des Kommandos <tt>apt-get update</tt> sollten dann die Beschreibungen zu den Paketen in deutscher Sprache erscheinen:
<div >Package: bash
Essential: yes
Priority: required
Section: base
Installed-Size: 1228
Maintainer: Matthias Klose <[mailto:doko@debian.org doko@debian.org]>
Architecture: i386
Source: bash (2.05b-2-15)
Version: 2.05b-15
Replaces: bash-doc (<= 2.05-1), bash-completion
Depends: base-files (>= 2.1.12)
Pre-Depends: libc6 (>= 2.3.2.ds1-4), libncurses5 (>= 5.4-1)
Suggests: bash-doc
Conflicts: bash-completion
Filename: pool/main/b/bash/bash_2.05b-15_i386.deb
Size: 622470
MD5sum: b804b1efff12046675a8826b41de7a37
Description: Die GNU Bourne Again Shell
  Bash ist ein sh-kompatibler Befehlssprachen-Interpreter, der Befehle
  ausführt, die von der Standardeingabe oder aus einer Datei kommen.
  Bash beinhaltet auch nützliche Fähigkeiten der Korn- und C-Shells
  (ksh und csh).
  .
  Letztendlich soll Bash eine kompatible Implementation der IEEE POSIX
  Shell and Tools Spezifikation (IEEE Working Group 10003.2) sein.
  .
  Im bash-Paket ist der Programmable Completion Code von Ian
  Macdonald enthalten.</div>
; Zugriff auf ältere Debian Releases
Manchmal kann es notwendig oder sinnvoll sein, ältere Debian Releases einzusetzen, beispielsweise um Debian auf älterer Hardware zu installieren. Eine Übersicht der verfügbaren Debian Releases ist unter [http://www.debian.org/distrib/archive http://www.debian.org/distrib/archive] zu finden.
; Zugriff auf tägliche Versionen von Paketen
Die jeweils aktuell in der Entwicklung befindliche Debian Version („testing“ oder „unstable“) unterliegt einem häufigen Wechsel der Paketversionen. Manchmal ist ein Paket nur für einen oder wenige Tage verfügbar. Da nun neuere Versionen nicht immer eine Verbesserung mit sich bringen, wollen Sie vielleicht auf ein älteres Paket ausweichen.
Leider sind auf den Debian Servern ältere Pakete nicht mehr verfügbar. Unter [http://snapshot.debian.net/ http://snapshot.debian.net] sind alle Pakete, auch in älteren Versionen, weiterhin zugänglich.
Der Zugriff auf dieses Archiv erfolgt mit einigen besonderen Einträgen in der Datei <tt>/etc/sources.list</tt>. Hierbei kann zwischen dem Zugriff über ein absolutes oder ein relatives Datum gewählt werden.
<div >deb http://snapshot.debian.net/archive/YYYY/MM/DD/debian unstable main contrib non-free
deb http://snapshot.debian.net/archive/YYYY/MM/DD/debian-non-US unstable/non-US main contrib non-free
deb-src http://snapshot.debian.net/archive/YYYY/MM/DD/debian unstable main contrib non-free
deb-src http://snapshot.debian.net/archive/YYYY/MM/DD/debian-non-US unstable/non-US main contrib non-free</div>
Im vorhergehenden Beispiel kann gezielt auf den tagesaktuellen Stand zugegriffen werden. Die Buchstabenkombination <tt>YYYY/MM/DD</tt> ist dabei durch das gewünschte Datum zu ersetzen.
<div >deb http://snapshot.debian.net/archive/date/datestr/debian unstable main contrib non-free
deb http://snapshot.debian.net/archive/date/datestr/debian-non-US unstable/non-US main contrib non-free
deb-src http://snapshot.debian.net/archive/date/datestr/debian unstable main contrib non-free
deb-src http://snapshot.debian.net/archive/date/datestr/debian-non-US unstable/non-US main contrib non-free</div>
In diesem Beispiel muss <tt>datestr</tt> durch einen String ersetzt werden, der dem Kommando <tt>date</tt> als Datum bekannt ist. Dies kann beispielsweise <tt>yesterday</tt>, <tt>2-days-ago</tt> oder <tt>last-week</tt> sein.
; apt.conf
Die Konfigurationsdatei <tt>/etc/apt/apt.conf</tt> stellt die zentrale Stelle für alle Einstellungen von Programmen dar, die auf APT aufsetzen. Von allen Programmen wird zum einen die gemeinsame Konfigurationsdatei, zum anderen auch ein Kommandozeilen-Interpreter (<tt>apt-config</tt>) genutzt, um die Konfigurationsdatei auszuwerten. Dies garantiert für alle Programme eine einheitliche Arbeitsumgebung. Beim Start eines auf APT basierenden Programmes wird zunächst die Umgebungsvariable <tt>APT_CONFIG</tt> ausgewertet. Über diese Umgebungsvariable lässt sich eine alternative Konfigurationsdatei angeben.
Die Konfigurationsdatei ist in einer Baumstruktur organisiert und trennt verschiedene Optionen in funktionale Gruppen. Werte für Optionen werden durch zwei Doppelpunkte eingeleitet, beispielsweise so: <tt>APT::Get::Assume-Yes</tt>. Optionen übernehmen keine Werte von übergeordneten Gruppen.
Die Syntax der Konfigurationsdatei ist an die von Programmen wie <tt>bind</tt> und <tt>dhcp</tt> angelehnt. Zeilen, die mit den Zeichen <tt>//</tt> beginnen, werden als Kommentare behandelt und ignoriert. Alle weiteren Zeilen entsprechen dem Aufbau von <tt>APT::Get::Assume-Yes "true";</tt>. Wichtig ist hierbei das abschließende Semikolon am Ende jeder Zeile, die Werte selbst können, müssen aber nicht von Anführungszeichen umschlossen werden. Ein neuer Bereich wird durch geschweifte Klammern umschlossen.
<div >APT {Get {
Assume-Yes "true";Fix-Broken "true"; };};</div>
Leerzeilen können innerhalb eines Bereiches genutzt werden, um die Datei besser lesbar zu halten. Einfache Einträge können erzeugt werden, indem innerhalb eines Bereiches ein Kommando abgelegt wird und der Eintrag mit einem Semikolon beendet wird. Ein Beispiel:
<div >DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};</div>
Hier ein einfaches Beispiel für eine APT-Konfigurationsdatei (<tt>/etc/apt/apt.conf</tt>):
<div >// $Id: apt.conf,v 1.43 1999/12/06 02:19:38 jgg Exp $
/* This file is a sample configuration file with a few harmless sample
    options.
<nowiki>*/</nowiki>
APT
{
  // Options for apt-get
  Get
  {
      Download-Only "false";
  };
};
// Options for the downloading routines
Acquire
{
  Retries "0";
};
// Things that effect the APT dselect method
DSelect
{
  Clean "auto";  // always|auto|prompt|never
};
DPkg
{
  // Probably don't want to use force-downgrade..
  Options {"--force-overwrite";}
}</div>
Innerhalb der Konfigurationsdatei sind zwei spezielle Einträge erlaubt, <tt><nowiki>#include</nowiki></tt> und <tt><nowiki>#clear</nowiki></tt>. <tt><nowiki>#include</nowiki></tt> liest die angegebene Datei an der entsprechenden Stelle ein, solange der Dateiname nicht mit einem Slash (<tt>/</tt>) endet. <tt><nowiki>#clear</nowiki></tt> löscht eine Liste von Namen.
Allen APT-Programmen kann die Option <tt>-o</tt> übergeben werden, um eine Konfigurationsoption auf der Kommandozeile zu übergeben. Die Syntax hierfür ist der volle Name der Option, beispielsweise <tt>APT::Get::Assume-Yes</tt>, gefolgt von einem Gleichheitszeichen und dem gewünschten Wert für diese Option. Listen können Werte hinzugefügt werden, indem abschließend zwei Doppelpunkte (<tt>::</tt>) angegeben werden.
Im Folgenden werden die verschiedenen Gruppen in der Konfigurationsdatei beschrieben.
; APT
Diese Gruppe enthält generelle Parameter zu allen APT-Programmen.
{|| class="wikitable sortable"
|-
|| '''Architecture'''
|| Die System Architektur. Über diesen Wert wird ermittelt, welche Paketlisten und Debian Pakete passend zur Hardware-Architektur geholt werden. Voreingestellt ist immer die Architektur für die APT auf dem System übersetzt wurden.
|-
|| '''Ignore-Hold'''
|| Setzt den „Hold“-Status global für alle Pakete außer Kraft.
|-
|| '''Clean-Installed'''
|| Voreingestellt ist hier der Wert „on“.
|-
|| '''Immediate-Configure'''
|| Mit dieser Option lässt sich das unmittelbare Konfigurieren von Paketen abschalten. APT ruft nach einer Anzahl von Paketen, die zur Installation vorgemerkt sind, die Konfiguration dieser Pakete auf. Dies ist sinnvoll, da Pakete aufeinander basieren und es erforderlich ist, dass ein bestimmtes Paket vor einem anderen bereits installiert und konfiguriert ist. Das Abschalten dieser Option kann die Installation von vielen Paketen auf einem langsamen System beschleunigen, führt aber unter Umständen zu Problemen bei der Installation.
|-
|| '''Force-LoopBreak'''
|| Diese Option erlaubt APT, ein essenzielles Paket kurzfristig zu entfernen, um eine Endlosschleife in einem Konflikt oder einer Abhängigkeit (Pre-Depend) auflösen zu können. Solch eine Endlosschleife darf eigentlich nicht existieren und ist ein schwerwiegender Fehler. Diese Option wirkt nicht bei den essenziellen Paketen <tt>tar</tt>, <tt>gzip</tt>, <tt>libc</tt>, <tt>dpkg</tt>, <tt>bash</tt> oder allen anderen Paketen, von denen diese Pakete abhängen. Diese Option darf nur eingesetzt werden, wenn Sie genau verstanden haben, was dies für Konsequenzen haben kann.
|-
|| '''Cache-Limit'''
|| APT nutzt einen festgelegten Speicherbereich, um Informationen über die verfügbaren Pakete zu speichern. Mit dieser Option kann der Wert verändert werden.
|-
|| '''Get'''
|| Dieser Abschnitt kontrolliert das Verhalten von <tt>apt-get</tt>.
|-
|| '''Cache'''
|| Dieser Abschnitt kontrolliert das Verhalten von <tt>apt-cache</tt>.
|-
|| '''CDROM'''
|| Dieser Abschnitt kontrolliert das Verhalten von <tt>apt-cdrom</tt>.
|-
|}
; Acquire
In dieser Gruppe sind Optionen für das Herunterladen von Paketen und die Behandlung von URIs enthalten.
{|| class="wikitable sortable"
|-
|| '''Queue-Mode'''
|| Dieser Eintrag betrifft die Behandlung von ausgehenden Verbindungen bei der Übertragung von Paketen. Der Wert „host“ bedeutet, dass zu jedem System, von dem Pakete geholt werden, eine Verbindung aufgebaut wird. Der Wert „access“ bewirkt, dass je URI-Typ eine Verbindung aufgebaut wird.
|-
|| '''Retries'''
|| Anzahl der Versuche bei einem fehlgeschlagenen Download.
|-
|| '''Source-Symlinks'''
|| Nutzt symbolische Links für Quellcode-Archive, anstatt eine Kopie der Datei anzulegen. Voreinstellung ist „True“.
|-
|| '''Http'''
|| HTTP-Adressen können mit diesem Eintrag über einen Proxy-Server erreicht werden. Die Angabe <tt>http::Proxy</tt> stellt der Standard-Proxy für alle Anfragen dar. Die Adresse des Proxy-Servers ist wie üblich als <tt><nowiki>http://[[user][:pass]@]host[:port]/</nowiki></tt> anzugeben. Alternativ kann für einzelne Server ein gesonderter Proxy in der Form <tt>http::Proxy::<host></tt> gesetzt werden. Soll für einen einzelnen Server kein Proxy verwendet werden, so ist das Schlüsselwort <tt>DIRECT</tt> zu benutzen. Die Umgebungsvariable <tt>http_proxy</tt> überschreibt alle diese Angaben. Es sind drei Werte im Zusammenhang mit diesem Eintrag erlaubt. <tt>No-Cache</tt> teilt dem Proxy mit, dass in keinem Fall Daten aus dem Cache benutzt werden sollen. <tt>Max-Age</tt> wird für Index-Dateien verwendet und gibt die Zeit in Sekunden an, die das maximale Alter der Index-Dateien bezeichnet. Die Index-Dateien auf Debian Servern werden täglich aktualisiert, der vorgegebene Wert entspricht ebenso einem Tag. <tt>No-Store</tt> führt dazu, dass die Anfrage niemals im Cache gespeichert wird. Mit der Option <tt>timeout</tt> lässt sich die Zeit für Verbindungs- und Daten-Timeouts einstellen.
|-
|| '''Ftp'''
|| FTP-Adressen können mit diesem Eintrag über einen Proxy-Server erreicht werden. Die Angabe <tt>ftp::Proxy</tt> stellt der Standard-Proxy für alle Anfragen dar. Die Adresse des Proxy-Servers ist wie üblich als <tt><nowiki>ftp://[[user][:pass]@]host[:port]/</nowiki></tt> anzugeben. Um einen FTP-Proxy zu nutzen, muss in der Konfigurationsdatei der Wert <tt>ftp::ProxyLogin</tt> mit einem Skript belegt sein. Dieser Eintrag beschreibt die Kommandos, die an den FTP-Server beim Login-Vorgang gesendet werden.
ProxyLogin
{
    "USER $(PROXY_USER)";
    "PASS $(PROXY_PASS)";
    "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
    "PASS $(SITE_PASS)";
};
Die Umgebungsvariable <tt>ftp_proxy</tt> überschreibt alle diese Angaben.
Mit der Option <tt>timeout</tt> lässt sich die Zeit für Verbindungs- und Daten-Timeouts einstellen.
|-
|| cdrom
|| Der Wert für einen Eintrag, der eine CD (ein CD-ROM- oder DVD-Laufwerk) betrifft, bezieht sich auf das Verzeichnis im Dateisystem, an dem der Inhalt eingebunden wird. Die Syntax für solch einen Eintrag lautet:
"/cdrom/"::Mount "foo";
Wichtig ist bei einem solchen Eintrag der vorangestellte Slash (<tt>/</tt>). Das Kommando <tt>umount</tt> kann ebenso durch den Eintrag <tt>UMount</tt> mit einer solchen Syntax genutzt werden.
|-
|}
; Verzeichnisse
{|| class="wikitable sortable"
|-
|| <tt>'''Dir::State</tt> '''
|| Dieser Abschnitt betrifft Verzeichnisse mit lokalen Status-Informationen. <tt>lists</tt> bezeichnet das Verzeichnis, in dem die heruntergeladenen Paketlisten abgelegt werden. <tt>status</tt> ist der Dateiname der <tt>dpkg</tt>-Status-Datei. <tt>preferences</tt> ist der Name der APT-Konfigurationsdatei. <tt>Dir::State</tt> bezeichnet das Verzeichnis, welches allen anderen Objekten in diesem Abschnitt vorangestellt wird, wenn diese nicht mit <tt>/</tt> oder <tt>./</tt> beginnen.
|-
|| <tt>'''Dir::Cache</tt> '''
|| In diesem Abschnitt werden Verzeichisse festgelegt, die mit heruntergeladenen Dateien zu tun haben. Die Angaben <tt>pkgcache</tt> und <tt>srcpkgcache</tt> enthalten das Verzeichnis für Binär- und Quellcode-Pakete. Die Verwendung des Cache kann deaktiviert werden, in dem die Verzeichnisnamen nicht angegeben werden. Das voreingestellte Verzeichnis für alle Caches wird in <tt>Dir::Cache</tt> festgelegt.
|-
|| <tt>'''Dir::Etc</tt> '''
|| Enthält den Pfad zu den Konfigurationsdateien, <tt>sourcelist</tt> bezeichnet dabei die Datei <tt>sources.list</tt>, <tt>main</tt> ist die voreingestellte Konfigurationsdatei.
|-
|| <tt>'''Dir::Parts</tt> '''
|| Dieser Abschnitt liest alle Konfigurationsteile in alphabetischer Reihenfolge aus dem angegebenen Verzeichnis. Danach wird die zentrale Konfigurationsdatei eingelesen.
|-
|| <tt>'''Dir::Bin</tt> '''
|| In diesem Verzeichnis werden binäre Programme gesucht. <tt>Dir::Bin::Methods</tt> enthält den Pfad zu den zusätzlichen Methoden. Die Angaben zu <tt>gzip</tt>, <tt>dpkg</tt>, <tt>apt-get</tt>, <tt>dpkg-source</tt>, <tt>dpkg-buildpackage</tt> und <tt>apt-cache</tt> zeigen auf die jeweiligen Programme im Verzeichnisbaum.
|-
|}
; APT innerhalb von dselect
Wird APT als Zugriffsmethode von <tt>dselect</tt> verwendet, so können die folgenden Parameter zur Konfiguration verwendet werden.
{|| class="wikitable sortable"
|-
|| <tt>'''Clean</tt> '''
|| Modus, um den Paketcache zu verwalten.
|-
|| <tt>'''options</tt> '''
|| Der Inhalt dieser Variablen wird an <tt>apt-get</tt> als Kommandozeilenoption weitergereicht, wenn eine Installation durchgeführt wird.
|-
|| <tt>'''Updateoptions</tt> '''
|| Der Inhalt dieser Variablen wird an <tt>apt-get</tt> als Kommandozeilenoption weitergereicht, wenn ein Update durchgeführt wird.
|-
|| <tt>'''PromptAfterUpdate</tt> '''
|| Wird die Funktion Update im Programm <tt>dselect</tt> verwendet, so wird immer nachgefragt, um eine Aktion fortzusetzen, wenn diese Variable auf True gesetzt ist.
|-
|}
; Aufruf von DPKG über APT
Im Abschnitt DPkg der Konfigurationsdatei können verschiedene Parameter eingestellt werden, die sich mit dem Aufruf von <tt>dpkg</tt> aus APT-basierenden Programmen beschäftigen.
{|| class="wikitable sortable"
|-
|| <tt>'''options</tt> '''
|| Eine Liste von Optionen, die dem Aufruf von <tt>dpkg</tt> übergeben werden.
|-
|| <tt>'''Pre-Invoke</tt>, <tt>Post-Invoke'''</tt>
|| Eine Liste von Shell-Kommandos, die vor bzw. nach dem Aufruf von <tt>dpkg</tt> ausgeführt werden. Die Kommandos werden mittels <tt>/bin/sh</tt> ausgeführt, sollte eines der Kommandos mit einem Fehler beendet werden, so bricht auf APT an dieser Stelle die weitere Ausführung ab.
|-
|| <tt>'''Pre-Install-Pkgs</tt> '''
|| Dies ist eine Liste von Kommandos, welche vor dem Aufruf von <tt>dpkg</tt> ausgeführt werden. Die Kommandos werden mittels <tt>/bin/sh</tt> ausgeführt, sollte eines der Kommandos mit einem Fehler beendet werden, so bricht auf APT an dieser Stelle die weitere Ausführung ab. APT übergibt die Namen aller zu installierenden Debian Paketdateien (<tt>.deb</tt>) an die Kommandos.
|-
|| <tt>'''Run-Directory</tt> '''
|| APT wechselt in das hier angegebene Verzeichnis vor dem Aufruf von <tt>dpkg</tt>. Voreingestellt ist hier das Verzeichnis <tt>/</tt>.
|-
|| <tt>'''Build-options</tt> '''
|| Diese Optionen werden dem Programm <tt>dpkg-buildpackage</tt> übergeben. Voreingestellt ist, dass Pakete nicht digital signiert werden und alle Binär-Pakete erzeugt werden.
|-
|}
Abschließend ein Beispiel für die APT-Konfigurationsdatei mit allen Optionen. Dieses Beispiel ist so in dieser Form nicht sinnvoll einzusetzen, zeigt aber sehr gut auf, wie verschiedene Optionen mit Werten belegt werden.
<div >// $Id: configure-index,v 1.10 2004/07/17 19:37:16 mdz Exp $
/* This file is an index of all APT configuration directives. It should
    NOT actually be used as a real config file, though it is (except for the
    last line) a completely valid file. Most of the options have sane default
    values, unless you have specific needs you should NOT include arbitary
    items in a custom configuration.
    In some instances involving filenames it is possible to set the default
    directory when the path is evaluated. This means you can use relative
    paths within the sub scope.
    The configuration directives are specified in a tree with {} designating
    a subscope relative to the tag before the {}. You can further specify
    a subscope using scope notation eg,
      APT::Architecture "i386";
    This is prefixed with the current scope. Scope notation must be used
    if an option is specified on the command line with -o.
<nowiki>*/</nowiki>
quiet "0";
// Options for APT in general
APT
{
  Architecture "i386";
  Build-Essential "build-essential";
  // Options for apt-get
  Get
  {
      Arch-Only "false";
      Download-Only "false";
      Simulate "false";
      Assume-Yes "false";
      Force-Yes "false";            // I would never set this.
      Fix-Broken "false";
      Fix-Missing "false";
      Show-Upgraded "false";
      Show-Versions "false";
      Upgrade "true";
      Print-URIs "false";
      Compile "false";
      Download "true";
      Purge "false";
      List-Cleanup "true";
      ReInstall "false";
      Trivial-Only "false";
      Remove "true";
      Only-Source "";
      Diff-Only "false";
      Tar-Only "false";
  };
  Cache
  {
      Important "false";
      AllVersions "false";
      GivenOnly "false";
      RecurseDepends "false";
      ShowFull "false";
      Generate "true";
      NamesOnly "false";
      AllNames "false";
      Installed "false";
  };
  CDROM
  {
      Rename "false";
      NoMount "false";
      Fast "false";
      NoAct "false";
  };
  // Some general options
  Ignore-Hold "false";
  Clean-Installed "true";
  Immediate-Configure "true";      // DO NOT turn this off, see the man page
  Force-LoopBreak "false";        // DO NOT turn this on, see the man page
  Cache-Limit "4194304";
  Default-Release "";
};
// Options for the downloading routines
Acquire
{
  Queue-Mode "host";      // host|access
  Retries "0";
  Source-Symlinks "true";
  // HTTP method configuration
  http
  {
    Proxy "[http://127.0.0.1:3128/ http://127.0.0.1:3128]";
    Proxy::http.us.debian.org "DIRECT";  // Specific per-host setting
    Timeout "120";
    Pipeline-Depth "5";
    // Cache Control. Note these do not work with Squid 2.0.2
    No-Cache "false";
    Max-Age "86400";    // 1 Day age on index files
    No-Store "false";    // Prevent the cache from storing archives
  };
  ftp
  {
    Proxy "[ftp://127.0.0.1/ ftp://127.0.0.1/]";
    Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting
    /* Required script to perform proxy login. This example should work
        for tisfwtk */
    ProxyLogin
    {
        "USER $(PROXY_USER)";
        "PASS $(PROXY_PASS)";
        "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
        "PASS $(SITE_PASS)";
    };
    Timeout "120";
    /* Passive mode control, proxy, non-proxy and per-host. Pasv mode
        is prefered if possible */
    Passive "true";
    Proxy::Passive "true";
    Passive::http.us.debian.org "true"; // Specific per-host setting
  };
  cdrom
  {
    mount "/cdrom";
    // You need the trailing slash!
    "/cdrom"
    {
        Mount "sleep 1000";
        UMount "sleep 500";
    }
  };
};
// Directory layout
Dir "/"
{
  // Location of the state dir
  State "var/lib/apt/"
  {
      Lists "lists/";
      xstatus "xstatus";
      userstatus "status.user";
      status "/var/lib/dpkg/status";
      cdroms "cdroms.list";
  };
  // Location of the cache dir
  Cache "var/cache/apt/" {
      Archives "archives/";
      srcpkgcache "srcpkgcache.bin";
      pkgcache "pkgcache.bin";
  };
  // Config files
  Etc "etc/apt/" {
      SourceList "sources.list";
      Main "apt.conf";
      Preferences "preferences";
      Parts "apt.conf.d/";
  };
  // Locations of binaries
  Bin {
      methods "/usr/lib/apt/methods/";
      gzip "/bin/gzip";
      dpkg "/usr/bin/dpkg";
      dpkg-source "/usr/bin/dpkg-source";
      dpkg-buildpackage "/usr/bin/dpkg-buildpackage"
      apt-get "/usr/bin/apt-get";
      apt-cache "/usr/bin/apt-cache";
  };
};
// Things that effect the APT dselect method
DSelect
{
    Clean "auto";  // always|auto|prompt|never
    Options "-f";
    UpdateOptions "";
    PromptAfterUpdate "no";
    CheckDir "no";
}
DPkg
{</div>
<div >  // Probably don't want to use force-downgrade..
    // Auto re-mounting of a readonly /usr
    Pre-Invoke {"mount -o remount,rw /usr";};
    Post-Invoke {"mount -o remount,ro /usr";};
    // Prevents daemons from getting cwd as something mountable (default)
    Run-Directory "/";
    // Build options for apt-get source –compile
    Build-Options "-b -uc";
    // Pre-configure all packages before they are installed using debconf.
    Pre-Install-Pkgs {"dpkg-preconfigure --apt --priority=low –frontend=dialog";};
    // Flush the contents of stdin before forking dpkg.
    FlushSTDIN "true";
    // Control the size of the command line passed to dpkg.
    MaxBytes 1024;
    MaxArgs 350;
}
/* Options you can set to see some debugging text They correspond to names
    of classes in the source code */
Debug
{
  pkgProblemResolver "false";
  pkgAcquire "false";
  pkgAcquire::Worker "false";
  pkgDPkgPM "false";
  pkgOrderList "false";
  pkgInitialize "false";  // This one will dump the configuration space
  NoLocking "false";
  Acquire::Ftp "false";    // Show ftp command traffic
  Acquire::Http "false";  // Show http command traffic
  aptcdrom "false";        // Show found package files
  IdentCdrom "false";
}
/* Whatever you do, do not use this configuration file!! Take out ONLY
    the portions you need! */
This Is Not A Valid Config File</div>
; apt-setup
Mit <tt>apt-setup</tt> können über eine Benutzeroberfläche die Einträge in der Datei <tt>/etc/apt/sources.list</tt> ergänzt werden. <tt>apt-setup</tt> kann hierzu die Methoden „http“,„ftp“ und „filesystem“ benutzen. Für die Methode „cdrom“ wird auf das Programm <tt>apt-cdrom</tt> zurückgegriffen. Ein weiterer Menüpunkt („edit sources list by hand“) ruft einen Editor (<tt>vi</tt>) auf; Sie können dann weitere Einträge von Hand aufnehmen. Nach Verlassen des Editors wird versucht, von den angegebenen Quellen die Packages-Dateien zu lesen.
[[Image:Grafik1.png|right|top]]
Als einzige Option kann beim Starten der Wert „probe“ übergeben werden. Dies führt dazu, dass eine eingelegte CD-ROM sofort eingelesen wird.
; apt-cdrom
Dieses Kommando wird von <tt>apt-setup</tt> zur Integration von neuen CD-ROMs verwendet, kann aber auch eigenständig auf der Kommandozeile eingesetzt werden.
Im einfachsten Fall führt das Kommando <tt>apt-cdrom add</tt> dazu, dass die eingelegte CD durchsucht und mit den entsprechenden Werten in die Datei <tt>sources.list</tt> aufgenommen wird. Hierzu ist ein entsprechender Eintrag für das CD-ROM-Laufwerk in der Datei <tt>/etc/fstab</tt> notwendig. Ein solcher Eintrag wird bereits bei der Installation angelegt und muss normalerweise nur bei Veränderungen an der Hardware angepasst werden.
Wird <tt>apt-cdrom</tt> ohne weitere Angaben aufgerufen, so werden Informationen über weitere Optionen ausgegeben.
<div >apt 0.5.9 for linux i386 compiled on Aug 10 2003 19:58:08
Usage: apt-cdrom [options] command
apt-cdrom is a tool to add CDROM's to APT's source list. The
CDROM mount point and device information is taken from apt.conf
and /etc/fstab.
Commands:
    add - Add a CDROM
    ident - Report the identity of a CDROM
Options:
  -h  This help text
  -d  CD-ROM mount point
  -r  Rename a recognized CD-ROM
  -m  No mounting
  -f  Fast mode, don't check package files
  -a  Thorough scan mode
  -c=? Read this configuration file
  -o=? Set an arbitary configuration option, eg -o dir::cache=/tmp
See fstab(5)</div>
; apt-get
<div ><tt>apt-get</tt> ist die zeitgemäße Benutzerschnittstelle zur Verwaltung von Paketen auf einem Debian System. Während es mit <tt>dpkg</tt> möglich ist, jedes beliebige Debian Paket zu installieren (wenn es zuvor auf die lokale Festplatte kopiert wurde), so ist <tt>apt-get</tt> zwingend auf eine Paketliste und damit auch eine sinnvolle <tt>sources.list</tt> angewiesen. Somit ist immer gewährleistet, dass das System in einem stabilen und fest definierten Zustand verbleibt. Mit <tt>apt-get</tt> wird dem Administrator ein ebenso elegantes wie auch mächtiges Werkzeug gegeben. Dies haben auch viele andere Distributionshersteller erkannt und haben <tt>apt-get</tt> in die eigenen Distributionen aufgenommen. <tt>apt-get</tt> ist somit auch auf RPM-basierten Systemen, wie beispielsweise Novell/SuSE oder RedHat/Fedora zu Hause. Die Entwicklung wird dabei über die [http://apt4rpm.sourceforge.net/ Webseite] koordiniert. Eine Übersicht von Repositories mit RPM-Paketen, die via APT installiert werden können, finden Sie unter [http://freshrpms.net/apt/repositories.html http://freshrpms.net/apt/repositories.html]. </div>
Dieses Programm ohne grafische Benutzeroberfläche ist recht einfach zu benutzen. Grafische Frontends zu <tt>apt</tt> sind mit <tt>aptitude</tt> und <tt>gnome-apt</tt> verfügbar.
; Status-Report
Bevor <tt>apt-get</tt> die gewünschten Aktionen wie zum Beispiel das Löschen oder Installieren einzelner Pakete ausführt, die das System verändern, werden Sie über den zukünftigen Zustand des Systems informiert. Es werden folgende Informationen angezeigt: die Anzahl der Pakete, die aktualisiert werden (neuere Version), die Anzahl der Pakete, die nicht verändert werden (kept back), die Anzahl der zu löschenden Pakete sowie die Anzahl der neu zu installierenden Pakete.
Zusätzlich werden, wenn Sie die Option <tt>install</tt> benutzen, die Pakete ausgewählt und angezeigt, die aufgrund der Abhängigkeiten der zu installierenden Pakete benötigt werden. Hier ein Beispiel:
<div >    The following extra packages will be installed:
        libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl
        mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base
        bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy
        squake pgp-i python-base debmake ldso perl libreadlineg2
        ssh</div>
Sollte es notwendig sein, Pakete zu löschen, oder wurden Pakete zum Entfernen ausgewählt, so werden auch diese gesondert angezeigt.
<div >    The following packages will be REMOVED:
        xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix
        xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel
        xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid
        nas xpilot xfig</div>
Diese Liste sollte aufmerksam geprüft werden, um sicherzugehen, dass nicht versehentlich Pakete entfernt werden.
Wenn Pakete neu installiert werden, so wird auch darüber informiert:
<div >    The following NEW packages will be installed:
        zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base</div>
Dies dient nur zur Information; diese Pakete sind bisher nicht auf Ihrem System installiert.
Bei der Auswahl der Pakete kann es passieren, dass aufgrund von nicht erfüllten Abhängigkeiten einzelne Pakete in der aktuellen Version behalten werden. Da nicht alle benötigten Komponenten installiert werden können, werden diese Pakete nicht aktualisiert (kept back).
<div >    The following packages have been kept back:
        compface man-db tetex-base msql libpaper svgalib1
        gs snmp arena lynx xpat2 groff xscreensaver</div>
Immer wenn ein System mit der Option <tt>upgrade</tt> aktualisiert wird, kann es passieren, dass einzelne Pakete nicht aktualisiert werden können, weil diese auf Paketen basieren, die noch nicht in der benötigten Version verfügbar sind, oder aber es bestehen Konflikte mit bereits installierten Paketen. In diesem Fall werden die Pakete im aktuellen Zustand gehalten. Sie können <tt>apt-get install</tt> benutzen, um diese Pakete trotzdem zu aktualisieren.
<div >    The following held packages will be changed:
        cvs</div>
Wenn Sie ein auf „hold“ gesetztes Paket aktualisieren, bekommen Sie die Meldung, dass dieses Paket verändert (changed) wird. Außer bei <tt>apt-get install</tt> kann diese Meldung auch bei <tt>apt-get dist-upgrade</tt> auftreten.
Abschließend findet sich noch eine Zusammenfassung über die Anzahl der betroffenen Pakete. Weiterhin wird angezeigt, welches Datenvolumen übertragen werden muss und wie viel Festplattenplatz zusätzlich benötigt wird (oder auch frei wird).
<div >206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.
12 packages not fully installed or removed.
Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.</div>
Die erste Zeile ist eine knappe Zusammenfassung in Zahlen zu den bereits vorher ausgegebenen Informationen. In der zweiten Zeile finden Sie die nicht installierten Pakete, die bereits entpackt, aber nicht konfiguriert wurden („N packages not fully installed or removed“). In der dritten Zeile finden Sie die Informationen über den benötigten Platz und die zu übertragenden Daten. Hierbei steht die erste Zahl für die tatsächlich noch zu übertragenden Daten und die zweite für den Gesamtwert. Wenn bereits Pakete bei einer früheren Installation (möglicherweise auch nur teilweise) übertragen worden sind, aber nicht installiert werden konnten, so werden diese gespeichert und nicht noch einmal übertragen.
Wenn Sie nun mit der Installation beginnen (dies müssen Sie bei <tt>apt-get install</tt> mit einem <tt>y</tt> anstoßen), werden die Pakete von dem ausgewählten Medium gelesen und installiert.
; Status-Anzeige
Während des Herunterladens von Archiven und Paketdateien zeigt <tt>apt-get</tt> eine Reihe von Informationen an:
<div >sushi:/root# apt-get update
Get:1 ftp://linux frozen/main Packages [833kB]
Get:2 ftp://linux frozen/main Release [93B]
Get:3 ftp://linux frozen/contrib Packages [33.4kB]
Get:4 ftp://linux frozen/contrib Release [96B]
Get:5 ftp://linux frozen/non-free Packages [78.1kB]
Get:6 ftp://linux frozen/non-free Release [97B]
Get:7 ftp://linux stable/non-US Packages [8880B]
Get:8 ftp://linux stable/non-US Release [95B]
Fetched 953kB in 12s (74.1kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done</div>
Unmittelbar während des Downloads wird auch der Fortschritt angezeigt, inklusive der voraussichtlich noch benötigten Zeit für die Übertragung:
<div >11% [5 frozen/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s</div>
In den mit <tt>Get:</tt> beginnenden Zeilen stehen die benutzte Methode (hier <tt>ftp</tt>) und der benutzte Server. Den Servernamen können Sie in einem lokalen Netz auch verkürzt angeben, wie hier mit <tt>linux</tt> gezeigt. Weiterhin werden der Bereich (<tt>frozen</tt> und <tt>stable</tt>) sowie die Verzeichnisse (<tt>main</tt>, <tt>contrib</tt> usw.) und die Dateinamen mit der Dateigröße angezeigt.
Bei der Installation von Paketen sieht der Vorgang ähnlich aus:
<div >sushi:/root# apt-get install aptitude
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
aptitude
0 packages upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 148kB of archives. After unpacking 471kB will be used.
Get:1 ftp://ftp.debian.de potato/main aptitude 0.0.4a-3 [148kB]
Fetched 148kB in 5s (25.3kB/s)
Selecting previously deselected package aptitude.
(Reading database ... 22625 files and directories currently installed.)
Unpacking aptitude (from .../aptitude_0.0.4a-3_i386.deb) ...
Setting up aptitude (0.0.4a-3) ...</div>
Hier wird in der Zeile „Get:“ der Paketname der zu installierenden Software angezeigt. Danach wird das Paket entpackt und installiert.
; Installation von Paketen überwachen
Im laufenden Betrieb werden von den verschiedenen Diensten auf einem System Logdateien (im Verzeichnis <tt>/var/log/</tt>) erzeugt. Wünschenswert wäre eine solche Funktionalität auch für die Installation von Software-Paketen, <tt>dpkg</tt> stellt ab der Version 1.13.5 die Option <tt>--log</tt> zur Verfügung.
Die Option <tt>--</tt>log protokolliert sowohl den Aufruf von <tt>dpkg</tt> (z.B. <tt>2005-12-30 18:10:33 install hello 1.3.18 2.1.1-4</tt>) als auch die Ergebnisse (z.B. <tt>2005-12-30 18:10:35 status installed hello 2.1.1-4</tt>)
Wenn jeder Aufruf von <tt>dpkg</tt> protokolliert werden soll (auch wenn dieser über Oberflächen wie <tt>aptitude</tt> geschehen ist), könnte der Eintrag <tt>log /var/log/dpkg.log</tt> der Datei <tt>/etc/dpkg/dpkg.cfg</tt> hinzugefügt werden. Es ist dafür zu sorgen, dass die erstellte Protokolldatei regelmäßig rotiert wird, da die Größe der Datei bei jeder Installation (oder auch beim Entfernen) eines Pakets zunimmt. Wenn das Programm <tt>logrotate</tt> benutzt wird, kann dies erreicht werden, indem eine Datei <tt>/etc/logrotate.d/dpkg</tt> mit folgendem Inhalt erstellt wird:
<div >/var/log/dpkg {
        missingok
        notifempty
        }</div>
; Optionen und Kommandos
apt-get benutzt folgende Syntax:
<div >apt-get [options] [command] [package ...] </div>
Die Optionen werden Sie sicher seltener benötigen, daher zuerst einige Worte zu den einzelnen Kommandos:
<div ><tt>check</tt> </div>
<div >Bei jedem Start von <tt>apt</tt> (es sei denn, Sie benutzen die Option <tt>update</tt>) wird eine Reihe von Prüfungen durchgeführt, um sicherzustellen, dass <tt>apt</tt> funktionsfähig und Ihr System in einem guten Zustand ist. Sie können diese Prüfungen auch zu jeder Zeit selbst anstoßen:</div>
<div >sushi:/root# apt-get check
Reading Package Lists... Done
Building Dependency Tree... Done</div>
<div >Als Erstes werden die Paketdateien anhand der Informationen in <tt>/etc/apt/sources.list</tt> eingelesen. Wenn Sie diesen Vorgang noch einmal wiederholen, werden Sie feststellen, dass der zweite Test deutlich schneller beendet ist, die Informationen werden von <tt>apt</tt> zwischengespeichert. Für Paketdateien, die nicht gefunden werden, wird ggf. eine Warnung ausgegeben; diese Pakete werden dann ignoriert.</div>
<div >Im zweiten Schritt wird eine detaillierte Analyse des Systems durchgeführt, inklusive aller Abhängigkeiten. Es werden von jedem installierten oder bereits entpackten, aber noch nicht konfigurierten Paket die Abhängigkeiten geprüft. Wenn dabei ein Problem auftaucht, wird dies angezeigt, und <tt>apt-get</tt> bricht die weitere Bearbeitung ab.</div>
<div >sushi:/root# apt-get check
Reading Package Lists... Done
Building Dependancy Tree... Done
You might want to run apt-get -f install' to correct these.
Sorry, but the following packages have unmet dependencies:
  9fonts: Depends: xlib6g but it is not installed
  uucp: Depends: mailx but it is not installed
  blast: Depends: xlib6g (>= 3.3-5) but it is not installed
  adduser: Depends: perl-base but it is not installed
  aumix: Depends: libgpmg1 but it is not installed
  debiandoc-sgml: Depends: sgml-base but it is not installed
  bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed
  cthugha: Depends: svgalibg1 but it is not installed
            Depends: xlib6g (>= 3.3-5) but it is not installed
  libreadlineg2: Conflicts:libreadline2 (< 2.1-2.1)</div>
<div >In diesem Beispiel gibt es eine ganze Reihe Probleme: Einige Pakete sind gar nicht installiert, bei anderen Paketen sind falsche Versionen installiert. Für jedes einzelne Paket, bei dem ein Problem festgestellt wurde, wird eine Zeile ausgegeben mit den Informationen, um welches Paket es sich handelt und welches Problem festgestellt wurde.</div>
<div >Es gibt zwei Möglichkeiten, wie es zu solchen Problemen kommen kann: Bei einem „Upgrade“ kann es passieren, dass ein benötigtes Paket fehlt, oder es ist während der Installation eines Pakets ein Problem aufgetreten. Wenn Letzteres der Fall ist, dann wurde das Paket zwar entpackt, aber nicht korrekt konfiguriert.</div>
<div >Beide Situationen können von <tt>apt</tt> in den meisten Fällen mit der Option <tt>-f</tt> selbst behoben werden. Wenn Sie <tt>dselect</tt> mit der Methode <tt>apt</tt> benutzen, wird immer die Option <tt>-f</tt> verwendet, um eine einfache Verwendung zu gewährleisten.</div>
<div >Trotzdem kann es passieren, dass bei einem schweren Problem apt nicht in der Lage ist, das Problem zu beheben. In diesem Fall müssen Sie von Hand mit dem Programm <tt>dpkg</tt> den Konflikt beseitigen. Sie können danach mit <tt>apt-get</tt> fortfahren.</div>
<div ><tt>update</tt> </div>
<div >aktualisiert die Übersicht der verfügbaren Pakete, liest also die Informationen aus den Dateien <tt>Packages.gz</tt> der jeweiligen Distribution ein. Sie sollten <tt>update</tt> immer ausführen, wenn Sie wissen, dass sich die Inhalte der Paketdateien beziehungsweise die verfügbaren Pakete auf dem Server geändert haben. Auf jeden Fall sollten Sie <tt>update</tt> vor dem Aufruf von <tt>upgrade</tt> oder <tt>dist-upgrade</tt> aufrufen.</div>
<div >Eine neue Fähigkeit von <tt>apt</tt> seit Debian 4.0 ist die Möglichkeit, lediglich die Änderungen der Packages-Dateien seit ihrer letzten Aktualisierung herunterzuladen. </div>
<div ><tt>upgrade</tt> </div>
<div >Um alle auf dem System installierten Pakete auf die aktuelle Version zu bringen, können Sie <tt>upgrade</tt> benutzen. Alle bereits installierten Pakete, von denen eine neuere Version verfügbar ist, werden aktualisiert. Es werden keine Pakete gelöscht, die bereits installiert sind (und in den neuen Paketdateien nicht mehr enthalten sind), oder Pakete installiert, die noch nicht auf dem System vorhanden sind. Pakete, die bereits installiert sind und es bei einem Upgrade erforderlich machen, den Status anderer Pakete zu verändern, werden nicht aktualisiert. <tt>apt-get update</tt> muss vorab ausgeführt werden, so dass sichergestellt ist, dass die Paketinformationen auf dem neuesten Stand sind.</div>
<div ><tt>dist-upgrade</tt> </div>
<div >ist eigentlich eine Ergänzung oder Erweiterung zu <tt>upgrade</tt>. Es wird hierbei dafür Sorge getragen, dass für das System wichtigere Pakete zuerst installiert werden. Hierbei werden in engen Grenzen auch Abhängigkeiten verändert, um ein Paket installieren zu können. Dies ist dann notwendig, wenn ein System komplett auf eine neue Version umgestellt werden soll und kein „sanfter“ Übergang gewährleistet werden kann.</div>
<div ><tt>dselect-upgrade</tt> </div>
<div >Mit dieser Option werden auch die Paketinformationen „recommends“ und „suggests“ ausgewertet. Dies ist sonst nur mit <tt>dselect</tt> möglich. Diese Vorschläge für weitere Pakete sind zur Funktion des gewünschten Pakets nicht zwingend erforderlich, können aber durchaus sinnvoll sein.</div>
<div ><tt>install</tt> </div>
<div >Diese Option benötigt noch einen oder mehrere Paketnamen. Jedes dieser Pakete (der Paketname, also beispielsweise <tt>sendmail</tt>, reicht hierbei aus) sowie die noch benötigten Pakete (diese werden automatisch ermittelt) werden auf Basis der Informationen in <tt>/etc/apt/sources.list</tt> geholt und installiert. Wenn Sie hinter den Namen des Pakets ein Minuszeichen (<tt>-</tt>) setzen, wird das Paket aus dem System entfernt, wenn es bereits installiert ist. Achten Sie darauf, dass das Minuszeichen (ohne ein Leerzeichen dazwischen) unmittelbar nach dem Paketnamen steht. Diese Funktion kann auch bei Konflikten bei der Installation einzelner Pakete sehr nützlich sein: Sie können so Pakete in einem Vorgang löschen und installieren. Die Option „install“ wählt immer die aktuellste verfügbare Version eines Pakets aus. Es kann jedoch sinnvoll sein, auch Zugriff auf ältere Programmversionen zu haben. Hierzu kann ab der Version 0.5.3 von <tt>apt</tt> folgende Syntax verwendet werden: <tt>apt-get install sane/unstable</tt>. Durch einen Slash ('''/''') getrennt, kann hinter dem Paketnamen das gewünschte Release eines Pakets angegeben werden.</div>
<div >Eine weitere Möglichkeit ist es, falls verschiedene Versionen eines Pakets verfügbar sind, direkt die gewünschte Versionsnummer anzugeben. Zunächst sollte man mit <tt>apt-cache</tt> prüfen, welche Versionen eines Pakets verfügbar sind. Mit <tt>apt-get install vim=6.0.093-2</tt> kann dann ganz gezielt die gewünschte Version installiert werden.</div>
<div ><tt>--reinstall</tt> </div>
<div >Diese Option installiert das gewünschte Paket komplett neu, auch wenn es bereits installiert ist. Beachten Sie, dass hierbei auch die Option <tt>install</tt> anzugeben ist!</div>
<div ><tt>remove</tt> </div>
<div >Diese Funktion ist analog zu „install“, nur mit dem Unterschied, dass die Pakete standardmäßig entfernt werden, anstatt sie zu installieren. Analog zu dem eben Beschriebenen können Sie hier ein Pluszeichen (<tt>+</tt>) verwenden, um Pakete zu installieren.</div>
<div ><tt>check</tt> </div>
<div >dient lediglich zur Diagnose. Es wird überprüft, ob sich irgendwelche Unstimmigkeiten in den Paketen finden.</div>
<div ><tt>--purge remove</tt> </div>
<div >Löscht das gewünschte Paket und alle weiteren Pakete, die direkt von diesem Paket abhängig sind. Weiterhin werden alle zu den Paketen gehörenden Konfigurationsdateien gelöscht.</div>
<div ><tt>clean</tt> </div>
<div >Dies löscht das lokale Verzeichnis, in dem sich die zu installierenden Pakete befinden. Alles, mit Ausnahme der lock-Datei, wird aus <tt>/var/cache/apt/archives/</tt> und <tt>/var/cache/apt/archives/partial/</tt> gelöscht.</div>
<tt>source</tt>
<div >Dieses Kommando holt die notwendigen Dateien zur Erzeugung eines Binärpakets. Es können so angepasste Pakete erzeugt werden oder aber Pakete auf einer anderen Architektur übersetzt werden. Wichtig ist hierbei ein entsprechender „deb-src“-Eintrag in der Datei <tt>sources.list</tt>. Um alle zu einem Paket gehörenden Dateien von einem Server zu holen, reicht das Kommando <tt>apt-get source paketname</tt>. Es werden die aktuellen Versionen der Dateien <tt>paketname.orig.tar.gz</tt>, <tt>paketname.dsc</tt> und <tt>paketname.diff.gz</tt> im aktuellen Verzeichnis gespeichert.</div>
<div >Um aus den Quellen direkt ein Binärpaket zu erzeugen, kann die Option <tt>-b</tt> angegeben werden. Das komplette Kommando lautet dann <tt>apt-get source -b paketname</tt>. Wenn die benötigten Source-Pakete bereits vorliegen, kann das Binärpaket auch direkt mit dem Kommando <tt>dpkg-buildpackage -rfakeroot -us -uc</tt> erzeugt werden.</div>
<div ><tt>build-dep</tt> </div>
<div >Die meisten Software-Pakete benötigen bei der Übersetzung aus den Quellpaketen weitere Entwicklungspakete wie Libraries und Header-Dateien. Diese werden häufig nicht mitgeliefert und liegen in gesonderten Paketen vor. Das Debian Paketsystem sieht so genannte „build dependencies“ vor, in denen alle Abhängigkeiten zur Erzeugung eines Pakets beschrieben sind.</div>
<div >Das Kommando <tt>apt-get build-dep paketname</tt> sorgt dafür, dass alle zur Übersetzung eines Pakets benötigten Dateien auf dem System vorhanden sind.</div>
<tt>moo</tt>
<div >Als kleine versteckte Option haben die Entwickler auch noch ein so genanntes „Easter-Egg“ eingebaut:</div>
<div >fr@sushi:~$ apt-get moo
          (__)
          (oo)
    /------\/
  / |    ||
  <nowiki>* </nowiki> /\---/\
    ~~  ~~
...."Have you mooed today?"...</div>
Soweit zu den Parametern. Sie können noch folgende Optionen benutzen, um <tt>apt-get</tt> zu steuern:
{|| class="wikitable sortable"
|-
|| <tt>'''-h</tt> '''
|| Zeigt die Hilfe zu <tt>apt-get</tt> an.
|-
|| <tt>'''-m</tt> '''
|| Ignoriert eventuell fehlende Pakete.
|-
|| <tt>'''-d</tt> '''
|| Holt die gewünschten Pakete vom Server, ohne diese zu installieren.
|-
|| <tt>'''-f</tt> '''
|| Behebt die defekten Abhängigkeiten zwischen den Paketen. <tt>apt-get -f install</tt> versucht, diese automatisch zu reparieren.
|-
|| <tt>'''-s</tt> '''
|| Simulation, führt keine Aktionen aus.
|-
|| <tt>'''-u</tt> '''
|| Zeigt auch die zu aktualisierenden Pakete an.
|-
|| <tt>'''-y</tt> '''
|| Aktualisiert alle Pakete automatisch, indem alle Fragen mit „Yes“ beantwortet werden.
|-
|}
; Beispiel aus der Praxis zur Benutzung von APT
Beachten Sie bitte, dass Pakete nur mit Superuser-Rechten (root) installiert werden können.
Zuallererst muss <tt>apt</tt> die Informationen über die verfügbaren Pakete erhalten; hierzu dient das Kommando <tt>apt-get update</tt>.
<div >sushi:/root # apt-get update
Hit ftp://192.168.0.5 potato/main Packages
Hit ftp://192.168.0.5 potato/main Release
Get:1 ftp://192.168.0.5 potato/non-free Packages [78.6kB]
Get:2 ftp://192.168.0.5 potato/non-free Release [99B]
Fetched 68.5kB in 0s (104kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done</div>
Nachdem das System nun über den aktuellen Stand der Pakete informiert ist, können Sie weitere Pakete mittels <tt>apt</tt> installieren, was hier am Beispiel von <tt>sane</tt> gezeigt wird:
<div >sushi:/root# apt-get install sane
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  libgimp1 libsane
The following NEW packages will be installed:
  libgimp1 libsane sane
0 packages upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
Need to get 703kB of archives. After unpacking 1729kB will be used.
Do you want to continue? [Y/n]</div>
Beachten Sie hierbei, dass automatisch die benötigten Pakete <tt>libgimp1</tt> und <tt>libsane</tt> ausgewählt wurden. Insgesamt werden also drei Pakete installiert. Weiter unten erhalten Sie noch Informationen über den später benötigten Festplattenplatz der Pakete sowie über die Größe der Pakete, die ja eventuell via FTP erst übertragen werden müssen. Wenn Sie mit den Angaben so einverstanden sind, bestätigen Sie dies mit der Eingabetaste, oder drücken Sie die Taste <tt>n</tt> und danach die Eingabetaste, um den Vorgang abzubrechen.
Wenn mehrere Pakete gleichzeitig installiert werden sollen, so können diese einfach hintereinander auf der Kommandozeile angegeben werden.
; Download aller installierten Pakete
Manchmal kann es wünschenswert sein, alle bereits installierten Pakete eines Systems erneut auf den Rechner zu kopieren, beispielsweise um eine Sicherungskopie zu haben oder um ein System zu duplizieren. Natürlich können die Pakete auch auf eine CD-ROM/DVD gebrannt oder in einen Spiegel eingefügt werden. Vorteilhaft bei dieser Methode ist es, dass ein in sich konsistentes System entsteht, in dem alle Abhängigkeiten erfüllt sind.
Ein Download der gewünschten Pakete kann mit folgenden Befehlen erzeugt werden:
<div ><nowiki># COLUMNS=200 dpkg -l | grep '^ii' | awk '{ print $2 }' > /tmp/pkgliste</nowiki>
<nowiki># cat /tmp/pkgliste | xargs apt-get --download-only --reinstall -y install</nowiki></div>
Die erste Zeile listet via <tt>dpkg</tt> alle Pakete auf und filtert mittels <tt>grep</tt> nur die installierten heraus. Danach wird die zweite Spalte in die Datei <tt>/tmp/pkgliste</tt> geschrieben.
Die zweite Zeile gibt via <tt>cat</tt> die Liste der Dateien aus. Mit <tt>xargs</tt> wird jede Zeile an das Kommando <tt>apt-get</tt> weitergegeben. Die Kombination der <tt>apt-get</tt> Optionen <tt>--reinstall</tt> und <tt>--download-only</tt> sowie <tt>-y</tt> führt dazu, dass auch bereits installierte Pakete aus dem Netz geholt werden, aber keine Installation durchgeführt wird.
Die Debian Pakete sind nach dem Download im Verzeichnis <tt>/var/cache/apt/archives/</tt> zu finden und können mit <tt>apt-move</tt> (siehe [http://apt-move.html/ apt-move ]) in eine Verzeichnisstruktur wie auf einem Debian Spiegel verschoben werden. <tt>apt-move</tt> ist auch in der Lage, die entsprechenden <tt>Packages.gz</tt>-Dateien zu erzeugen.
; apt_preferences
Über die APT Konfigurationsdatei <tt>/etc/apt/preferences</tt> kann detailliert festgelegt werden, welche Versionen von Paketen installiert werden sollen.
Enthält die Datei <tt>/etc/apt/sources.list</tt> unterschiedliche Quellen für Pakete, dies kann auch unterschiedliche Distributionen (beispielsweise „stable“ und „testing“) betreffen, so kann es vorkommen, dass ein bestimmtes Paket in verschiedenen Versionen verfügbar ist. APT vergibt für jede Version eines bekannten Paketes eine Priorität. Installiert wird jeweils die Version eines Paketes mit der höchsten Priorität. Die APT Konfigurationsdatei überschreibt die ermittelte Priorität und erlaubt so eine genaue Kontrolle darüber, welche Version installiert wird.
Sind über die Informationen in der <tt>sources.list</tt> gleiche Versionen eines Paketes aus unterschiedlichen Quellen verfügbar, so wird die in der <tt>sources.list</tt> zuerst genannte Quelle genutzt. Bei gleichen Versionsnummern eines Paketes ist keine Auswahl der Quelle über die APT Konfigurationsdatei möglich.
; Voreingestellte Prioritäten
Ist keine APT-Konfigurationsdatei oder kein Eintrag in der Konfigurationsdatei vorhanden, der auf ein Paket passt, so wird für dieses Paket die voreingestellte Priorität verwendet, welche der Distribution entspricht. Es besteht die Möglichkeit, ein bestimmtes Ziel-Release festzulegen, aus dem die Pakete installiert werden sollen. Diese Distribution wird als „Target Release“ bezeichnet. Das Ziel-Release kann dem Programm <tt>apt-get</tt> auf der Kommandozeile übergeben werden oder in der Konfigurationsdatei <tt>/etc/apt/apt.conf</tt>(siehe [http://apt.conf.html/ apt.conf]) gesetzt werden. Auf der Kommandozeile wird das Ziel-Release wie folgt angegeben:
<div >apt-get install -t testing paketname</div>
Wurde ein Ziel-Release angegeben, so nutzt APT den folgenden Algorythmus, um die Prioritäten eines Paketes zu ermitteln.
{|| class="wikitable sortable"
|-
|| '''Priorität 100'''
|| Wenn das Paket bereits installiert ist.
|-
|| '''Priorität 500'''
|| Wenn das Paket nicht installiert ist und auch nicht zum Ziel-Release gehört.
|-
|| '''Priorität 990'''
|| Wenn das Paket nicht installiert ist und zum Ziel-Release gehört.
|-
|}
Wird das Ziel-Release nicht angegeben, so vergibt APT die Priorität 100 an alle installierten Pakete und die Priorität 500 an alle nicht installierten Pakete. Danach folgt APT den nachfolgend angeführten Regeln, wobei die Regeln in der beschriebenen Reihenfolge abgearbeitet werden. # Ein Paket wird niemals mit einer kleineren Versionsnummer installiert (Downgrade), wenn die Priorität unter 1001 liegt. „Downgrade“ bedeutet, dass eine nicht aktuelle Version eines Paketes installiert wird, obwohl bereits eine aktuelle Version des Paketes installiert ist. Keine voreingestellte Priorität innerhalb von APT übersteigt den Wert 1000, ein solcher Wert kann ausschließlich über die Voreinstellungsdatei (<tt>preferences</tt>) gesetzt werden. Der Downgrade eines Paketes ist in jedem Fall als problematisch anzusehen und sollte nach Möglichkeit vermieden werden. In vielen Fällen führt ein Downgrade zu einem nicht funktionierenden Paket oder gar zu schweren Problemen mit dem Gesamtsystem.
# Das Paket mit der höchsten Priorität wird installiert.
# Wenn zwei oder mehrere Versionen eines Paketes die gleiche Priorität haben, so wird die Version mit der höchsten Versionsnummer installiert.
# Wenn zwei oder mehr Versionen eines Paketes die gleiche Priorität und Versionnummer haben, aber die Pakete sich in den Metadaten unterscheiden, oder aber die Option <tt>--reinstall</tt> auf der Kommandozeile angegeben ist, so wird das nicht installierte Paket ausgewählt.
Am häufigsten ist die Situation anzutreffen, dass ein bereits installiertes Paket (Priorität 100) in einer Version installiert ist, die nicht so aktuell (hoch) ist wie ein Paket, welches über eine Quelle in der Datei <tt>/etc/apt/sources.list</tt> (Priorität 500 oder 990) verfügbar ist. Dieses Paket wird aktualisiert, wenn das Kommando <tt>apt-get install paketname</tt> oder <tt>apt-get upgrade</tt> ausgeführt wird.
Seltener tritt der Fall ein, dass ein bereits installiertes Paket in einer aktuelleren Version vorhanden ist und kein Paket aus einer der in der Datei <tt>/etc/apt/sources.list</tt> genannten Quellen eine höhere Versionsnummer aufweist. In diesem Fall wird kein Downgrade durchgeführt, wenn das Kommando <tt>apt-get install paketname</tt> oder <tt>apt-get upgrade</tt> ausgeführt wird.
Manchmal ist die bereits installierte Version eines Paketes aktueller als die zum Ziel-Release gehörende Version, jedoch nicht so aktuell wie ein Paket, welches aus einer anderen Distribution verfügbar ist. In diesem Fall wird das Paket durch das Kommando <tt>apt-get install paketname</tt> oder <tt>apt-get upgrade</tt> aktualisiert, da eine der verfügbaren Versionen eine höhere Priorität besitzt als die aktuell installierte Version.
; Verwenden von Voreinstellungen
Die APT Konfigurationsdatei <tt>/etc/apt/preferences</tt> erlaubt dem Administrator, die Zuweisung von Prioritäten detailliert zu steuern. Die Konfigurationsdatei besteht aus Einträgen, die sich über mehrere Zeilen erstrecken und untereinander durch Leerzeilen getrennt sind. Die Einträge beziehen sich auf ein einzelnes Paket (spezifische Form) oder auf eine Anzahl von Paketen (generelle Form). # Die spezifische Form weist einem Paket eine (Pin-)Priorität zu und übergibt dabei eine gewünschte Version oder einen Versionsbereich. Das folgende Beispiel weist allen Versionen des Paketes <tt>perl</tt> eine hohe Priorität zu, solange die Versionsnummer mit „5.8“ beginnt. <br/>Package: perlPin: version 5.8*Pin-Priority: 1001
# Die generelle Form setzt eine Priorität für die angegebene Distribution oder für alle Pakete von einem bestimmten Server, welcher über den vollen Domainnamen (FQDN) identifiziert wird. <br/>Diese generelle Form wirkt sich ausschließlich auf Gruppen von Paketen aus. Folgendes Beispiel weist allen Paketversionen auf einem lokalen Repository mit Paketen eine hohe Priorität zu. <br/>Package: *Pin: origin ""Pin-Priority: 999<br/>Zu beachten ist hier das Schlüsselwort „origin“. Dieses entspricht nicht dem gleich lautenden Begriff in einer „Release“-Datei! In einer „Release“-Datei wird mit dem Schlüsselwort „origin“ ein Autor oder Hersteller (beispielsweise „Debian“ oder „Ximian“) beschrieben, nicht eine Internetadresse. <br/>Der folgende Eintrag setzt eine geringe Priorität für alle Paketversionen, die zu einer als „unstable“ bezeichneten Distribution gehören. <br/>Package: *Pin: release a=unstablePin-Priority: 50<br/>Das letzte Beispiel zeigt einen Eintrag, der eine hohe Priorität allen Paketen zuweist, die zum Release „stable“ gehören und eine Versionsnummer von „3.0“ aufweisen. <br/>Package: *Pin: release a=unstable, v=3.0Pin-Priority: 50
; Bewertung von Prioritäten
Prioritäten (P), die in der APT-Konfigurationsdatei vergeben werden, müssen positive oder negative Integerzahlen sein. Diese werden wie folgt interpretiert.
{|| class="wikitable sortable"
|-
|| '''P > 1000'''
|| Installiert ein Paket, auch wenn dies ein „Downgrade“ des Paketes bewirkt.
|-
|| '''990 < P <= 1000'''
|| Installiert ein Paket, auch wenn es nicht aus dem „Target“-Release stammt, außer die bereits installierte Version ist aktueller.
|-
|| '''500 < P <= 990'''
|| Installiert ein Paket, wenn kein Paket passend zum „Target“-Release vorhanden ist oder die bereits installierte Version aktueller ist.
|-
|| '''100 < P <= 500'''
|| Bewirkt, dass eine Version installiert wird, solange keine andere Version aus irgeneiner anderen Distribution verfügbar ist oder aber die installierte Version aktueller ist.
|-
|| '''0 < ? <= 100'''
|| Installiert eine Version eines Paketes nur, wenn dieses Paket noch nicht installiert ist.
|-
|| '''P < 0'''
|| Verhindert, dass diese Version eines Paketes installiert wird.
|-
|}
Die Einträge werden in der aufgeführten Reihenfolge in der Konfigurationsdatei abgearbeitet. Wird ein auf das Paket oder die Paketgruppe passender Eintrag gefunden, so werden die folgenden Einträge ignoriert.
Sind die vorab beschriebenen Einträge in einer Konfigurationsdatei in der beschriebenen Reihenfolge abgelegt, so ergibt sich folgende Konfigurationsdatei:


<div >Package: perl
<noinclude>
Pin: version 5.8*
== Anhang ==
Pin-Priority: 1001
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
----
* [[dpkg]]
* [[aptitude]]
* [[apt]]
* [[Deb-Paketformat]]
* [[debconf]]


Package: *
==== Dokumentation ====
Pin: origin ""
==== Links ====
Pin-Priority: 999
===== Projekt =====
===== Weblinks =====


Package: *
[[Kategorie:Debian/Paketverwaltung]]
 
</noinclude>
Pin: release unstable
Pin-Priority: 50</div>
 
In dieser Zusammenstellung gelten folgende Regeln: # Es wird die aktuellste Version des Paketes „perl“ installiert, solange diese Version mit „5.8“ beginnt. Ist eine Version 5.8 von Perl verfügbar und ist die Version 5.9 bereits installiert, so wird ein „Downgrade“ durchgeführt.
# Jedes andere Paket, welches nicht das Paket „perl“ ist und auf dem lokalen System verfügbar ist, bekommt eine höhere Priorität. Dies bewirkt, dass nur wenige, nicht lokal verfügbare Pakete aus dem Netz installiert werden. Dies betrifft auch Versionen des „Target“-Release.
# Ein Paket, welches nicht auf dem lokalen System verfügbar ist, aber in einer Quelle in der Datei <tt>/etc/apt/sources.list</tt> aufgeführt wird und zu einem „unstable“ Release gehört, wird nur installiert, wenn es zur Installation ausgewählt wird und noch keine Version dieses Paketes installiert ist.
 
; Paketversionen und Distributionseigenschaften
 
Die Paketquellen, welche in der Datei <tt>/etc/apt/sources.list</tt> aufgeführt werden, enthalten im Idealfall die Dateien <tt>Packages</tt> (bzw. <tt>Packages.gz</tt>) und <tt>Release</tt>, mit denen die an der jeweiligen Quelle verfügbaren Pakete beschrieben werden.
 
Die Datei <tt>Packages</tt> befindet sich normalerweise im Pfad <tt>.../dists/dist-name/component/arch</tt>, also beispielsweise <tt>.../dists/stable/main/binary-i386/Packages</tt>. Diese Datei besteht aus einem mehrzeiligen Eintrag für jedes Paket, von dem für die APT Prioritäten lediglich die beiden Zeilen <tt>Package</tt> und <tt>Version</tt> benötigt werden.
 
Die Datei <tt>Release</tt> befindet sich im Pfad <tt>.../dists/dist-name</tt>, also beispielsweise unter <tt>.../dists/stable/Release</tt> oder auch <tt>.../dists/sarge/Release</tt>. Abweichend von der Datei <tt>Packages</tt> werden fast alle Informationen aus der <tt>Release</tt>-Datei benötigt. Diese sind:
 
; Archive
 
<div >Bezeichnet das Archiv, zu dem alle Pakete dieses Verzeichnisses gehören. Beispielsweise gibt die Zeile <tt>Archive: stable</tt> an, dass alle Pakete in dem Verzeichnisbaum unterhalb der Datei <tt>Release</tt> zum „stable“-Release von Debian gehören. </div>
 
<div >In der APT Konfigurationsdatei wird dieser Wert wie folgt gesetzt: </div>
 
<div >Pin: release a=stable</div>
 
; Version
 
<div >Diese Zeile bezeichnet die Release-Version der Distribution. Der Wert „3.1“ besagt auch, dass alle Pakete im Verzeichnisbaum zur Release 3.1 „Sarge“ von Debian gehören. Für Versionen wie „testing“ und „unstable“ werden keine Versionsnummern vergeben, da diese Versionen noch nicht veröffentlicht sind. Um diesen Wert in der APT-Konfigurationsdatei anzugeben, ist eine der folgenden Zeilen notwendig: </div>
 
<div >Pin: release v=3.0
Pin: release a=stable, v=3.0
Pin: release 3.0</div>
 
; Component
 
<div >Bezeichnet den Abschnitt der Distribution, aus der die Pakete stammen. Beispielsweise bezeichnet die Zeile <tt>Component: main</tt> in der <tt>Release</tt>-Datei, dass alle Pakete unterhalb diese Verzeichnisses zum Abschnitt „main“ gehören. Dies bedeutet auch, dass alle diese Pakete einer Lizenz entsprechen, die in den Debian Free Software Guidelines (siehe auch [http://dfsg.html/ DFSG]) festgelegt ist. Diese Angabe wird wie folgt in der APT-Konfigurationsdatei <tt>preferences</tt> festgelegt </div>
 
<div >Pin: release c=main            </div>
 
; Origin
 
<div >Bezeichnet den Ursprung der Pakete, meist ist hier „Debian“ angegeben. In der APT <tt>preferences</tt>-Datei sieht diese Zeile wie folgt aus: </div>
 
<div >Pin: release o=Debian            </div>
 
; Label:
 
<div >Eine Bezeichnung für die Pakete in diesem Verzeichnisbaum, dieser Eintrag hat meistens den Wert „Debian“. In der APT <tt>preferences</tt>-Datei sieht diese Zeile wie folgt aus: </div>
 
<div >Pin: release l=Debian</div>
 
Alle verfügbaren Dateien (<tt>Packages</tt> und <tt>Release</tt>), die über Quellen in der Datei <tt>/etc/apt/sources.list</tt> verfügbar sind, werden im Verzeichnis <tt>/var/lib/apt/lists/</tt> abgelegt. Dieses Verzeichnis kann durch die Variable <tt>Dir::State::Lists</tt> in der Datei <tt>apt.conf</tt> verändert werden. Die Dateinamen der gespeicherten <tt>Packages</tt> und <tt>Release</tt>-Dateien werden mit dem Namen des Servers sowie dem Pfad und der Architektur ergänzt, beispielsweise <tt>debiananwenderhandbuch.de_debian_dists_stable_main_binary-i386_Packages</tt>.
 
Weiterhin ist es möglich, eine oder mehrere Zeilen, beginnend mit dem Schlüsselwort <tt>Explanation:</tt>, mit einer Erklärung dieses Eintrages einzufügen.
 
Die Zeile <tt>Pin-Priority:</tt> in jedem Eintrag ist nicht zwingend erforderlich. Wird ein solcher Eintrag nicht gefunden, so wird eine um den Wert 1 reduzierte Priorität gegenüber dem vorhergehenden Eintrag vergeben.
 
; Beispiele
 
Das erste Beispiel zeigt, wie man allen Paketen der „stable“ Distribution eine Priorität über der vorgegebenen (von 500) zuweist. Bei allen anderen Paketen wird die Priorität um den Wert 10 verringert.
 
<div >Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900
 
Package: *
Pin: release o=Debian
Pin-Priority: -10</div>
 
Die beschriebene Konfiguration führt dazu, dass alle Pakete aus der aktuellen „stable“ Distribution installiert werden bzw. bereits installierte Pakete immer aktuell gehalten werden. Darüber hinaus ist es möglich, einzelne Pakete aus anderen Distributionen zu installieren, hier am Beispiel eines Paketes aus „testing“ gezeigt:
 
<div >apt-get install paketname/testing</div>
 
Das so aus „testing“ installierte Paket wird zu einem späteren Zeitpunkt nicht weiter aktualisiert. Dies muss von Hand durch den erneuten Aufruf des oben beschriebenen Kommandos erfolgen.
 
Das zweite Beispiel setzt eine hohe Priorität für Pakete aus dem „testing“-Zweig, eine etwas niedrigere Priorität für den „unstable“-Zweig und eine noch geringere Priorität für Pakete aus anderen Bereichen.
 
<div >Package: *
Pin: release a=testing
Pin-Priority: 900
 
Package: *
Pin: release a=unstable
Pin-Priority: 800
 
Package: *
Pin: release o=Debian
Pin-Priority: -10</div>
 
Diese Konfiguration bewirkt, dass bevorzugt Pakete aus „testing“ in den jeweils aktuellen Versionen installiert werden. Auch hier ist es möglich, mittels
 
<div >apt-get install paketname/unstable</div>
 
gezielt einzelne Pakete aus dem „unstable“-Bereich zu installieren.
 
; APT Pinning
 
Eine besondere Stärke des Debian Paketmanagements ist, dass unterschiedliche Release-Stände verwendet werden können. Hierzu sind zumindest zwei Releases (beispielsweise „woody“ und „testing“) mit entsprechenden Einträgen in der Datei <tt>/etc/apt/sources.list</tt> anzugeben. Nun kann mittels <tt>apt-get --target-release</tt> der gewünschte Release-Stand für ein Paket gewählt werden.
 
Sinnvoll einsetzbar ist dieses Feature leider nur mit zwei Releases; werden drei Debian Releases (beispielsweise zusätzlich „unstable“) oder aber eine Nicht-Debian Paketquelle gemischt, so kommt es zu seltsamen Ergebnissen. Die Lösung für dieses Problem ist eine Erweiterung der Datei <tt>/etc/apt/preferences</tt>.
 
Hier zunächst ein Beispiel für eine sinnvolle <tt>/etc/apt/preferences</tt>-Datei. Auf den meisten Systemen wird diese Datei nicht existieren (sie wird auch nicht zwingend benötigt) und muss daher neu angelegt werden.
 
<div >    <nowiki>* Track stable:</nowiki>
Explanation: see [http://www.argon.org/~roderick/apt-pinning.html http://www.argon.org/~roderick/apt-pinning.html]
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900
 
Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 400
 
Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 300
 
Package: *
Pin: release o=Debian
Pin-Priority: -1
      <nowiki>* Track testing:</nowiki>
Explanation: see [http://www.argon.org/~roderick/apt-pinning.html http://www.argon.org/~roderick/apt-pinning.html]
Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900
 
Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 300
 
Package: *
Pin: release o=Debian
Pin-Priority: -1</div>
 
Bereits beim einmaligen Aufruf von <tt>apt-get</tt> kann mit der Option <tt>-t</tt> der Wert für „APT::Default-Release“ gesetzt werden. Diese Einstellung gilt jedoch lediglich für diesen einen Aufruf von <tt>apt-get</tt>. Beispiel: <tt>apt-get -t unstable install paketname</tt>. Dies kann durchaus ein sehr nützliches Feature sein, kann sich aber in anderen Fällen auch problematisch auswirken.
 
Die gute Seite: Sind in der <tt>sources.list</tt> die Releases <tt>testing</tt> und <tt>unstable</tt> definiert und ist in der Datei <tt>apt.conf</tt> der Wert für <tt>APT::Default-Release</tt> auf „testing“ gesetzt, so ergeben sich folgende Prioritäten für das Paket „foo“:
 
<div >  release    version        priority
                        no -t switch      -t unstable
    testing      1.1          990              500
    unstable    1.2          500              990</div>
 
Ist das Paket „foo“ nicht installiert und wird <tt>apt-get install foo</tt> aufgerufen, so wird die Version 1.1 aus „testing“ installiert, da diese die höchste Priorität hat.
 
Mittels <tt>apt-get -t unstable install foo</tt> kann gezielt die Version 1.2 aus „unstable“ installiert werden, da für diesen einen Aufruf von <tt>apt-get</tt> die Priorität erhöht wird.
 
Übrigens kann auch die Ausgabe des Kommandos <tt>apt-cache policy</tt> (ohne weitere Parameter) als Gerüst für eine eigene Datei <tt>/etc/apt/preferences</tt> dienen:
 
<div >fr@inari:~$ apt-cache policy
Paketdateien:
  100 /var/lib/dpkg/status
      release
  500 http://security.debian.org testing/updates/main Packages
      release o=Debian,a=testing,l=Debian-Security,c=main
  500 http://ftp2.de.debian.org testing/main Packages
      release o=Debian,a=testing,l=Debian,c=main
      origin ftp2.de.debian.org
Festgehaltene Pakete (»Pin«):</div>
 
Die Manpage zu dieser Konfigurationsdatei wird mittels <tt>man apt_preferences 5</tt> angezeigt und enthält weitere Inform
 
; apt-key
 
Mit <tt>apt-key</tt> kann der von <tt>apt</tt> zur Authentifizierung von Paketen verwendete Schlüsselring verwaltet werden. Pakete, die mit einem Schlüssel aus dem Schlüsselring authentifiziert wurden, werden als vertrauenswürdig angesehen.
 
{|| class="wikitable sortable"
|-
|| <tt>'''add</tt> '''
|| fügt einen Schlüssel aus einer Datei oder der Standardeingabe (<tt>-</tt>) dem Schlüsselring hinzu.
|-
|| <tt>'''del'''</tt>
|| Löscht den Schlüssel mit der angegebenen KeyID aus dem Schlüsselring
|-
|| <tt>'''list'''</tt>
|| Zeigt die Liste der verfügbaren Schlüssel an.
|-
|| <tt>'''update'''</tt>
|| Aktualisiert den lokalen Schlüsselring mit den offiziellen Information
|-
|}
; apt-extracttemplates
 
<tt>apt-extracttemplates</tt> ist ein Werkzeug zum Extrahieren von DebConf-Konfigurations- und Template-Informationen aus Debian Paketen. Als Argument können eines oder mehrere Debian Pakete angegeben werden (diese müssen lokal vorliegen), die entsprechenden Konfigurations- und Template-Informationen werden in einem temporären Verzeichnis (<tt>/tmp/</tt>) abgelegt.
 
Die Syntax von <tt>apt-extracttemplates</tt> lautet
 
<div >apt-extracttemplates [-hv] [-t=temporary directory] file...</div>
 
Für jedes Paket wird eine Zeile im Format
 
<div >package version template-file config-script</div>
 
ausgegeben. Hier ein einfaches Beispiel:
 
<div >wasabi:/home/fr# apt-extracttemplates /var/cache/apt/archives/console-data_2002.12.04dbs-42_all.deb
console-data 2002.12.04dbs-42 /tmp/console-data.template.5090 /tmp/console-data.config.5091</div>
 
; Optionen
 
{|| class="wikitable sortable"
|-
|| <tt>'''-t</tt>, <tt>--tempdir'''</tt>
|| Hiermit kann das Verzeichnis bestimmt werden, in dem die Dateien abgelegt werden sollen.
|-
|| <tt>'''-h</tt>, <tt>--help'''</tt>
|| Zeigt eine kurze Hilfe zu <tt>apt-extracttemplates</tt> an.
|-
|| <tt>'''-v</tt>, <tt>--version'''</tt>
|| Zeigt die Programmversion an.
|-
|| <tt>'''-c</tt>, <tt>--config-file'''</tt>
|| Hiermit kann eine zusätzliche Konfigurationsdatei angegeben werden, diese wird vor der eigentlichen Konfigurationsdatei <tt>/etc/apt/apt.conf</tt> eingelesen.
|-
|| <tt>'''-o</tt>, <tt>--option'''</tt>
|| Dies setzt eine bestimmte Konfigurationsoption. Die Syntax hierzu: <tt>-o Foo::Bar=bar</tt> .
|-
|}
; apt-cache
 
Mit <tt>apt-cache</tt> können die verschiedensten Abfragen zu den bekannten Paketen (also auch zu den noch nicht installierten) erstellt werden. Dies beschränkt sich nicht nur auf Paketnamen oder die zu einem Paket gehörenden Dateinamen, sondern es können auch Informationen zu den Metadaten erfragt werden.
 
Wenn Sie nicht die Option <tt>-h</tt> oder <tt>--help</tt> benutzen, muss mindestens eines der folgenden Kommandos angegeben werden.
 
{|| class="wikitable sortable"
|-
|| <tt>'''add</tt> '''
|| fügt die angegebene Package-Datei dem Package-Cache hinzu.
|-
|| <tt>'''gencaches</tt> '''
|| Diese Option bewirkt das Gleiche wie <tt>apt-get check</tt>. Es werden die Source- und Package-Caches aus den Informationen in <tt>/etc/apt/sources.list</tt> und <tt>/var/lib/dpkg/status</tt> erstellt.
|-
|| <tt>'''showpkg</tt> '''
|| Diese Option zeigt Informationen über die weiterhin auf der Kommandozeile angegebenen Pakete. Es werden die verfügbaren Versionen der Pakete sowie die gesamten Abhängigkeiten dieser Pakete angezeigt. Hierbei wird zwischen so genannten „Forward“-Dependencies und „Reverse“-Dependencies unterschieden. Forward-Dependencies (dies sind die im normalen Sprachgebrauch verwendeten Abhängigkeiten) beziehen sich auf die Pakete, die das angefragte Paket benötigt, um einwandfrei zu funktionieren. Reverse-Dependecies beschreiben die Pakete, die das angefragte Paket benötigen, um zu funktionieren. Ein Beispiel: <tt>apt-cache showpkg bash</tt> gibt folgendes Ergebnis aus:
 
Package: bash
Versions:
2.05a-12(/var/lib/apt/lists/192.168.1.1_home_ftp_debian_dists_sid_
main_binary-i386_Packages)(/var/lib/dpkg/status)
2.05a-11(/var/lib/apt/lists/192.168.1.1_home_ftp_debian_dists_woody_
main_binary-i386_Packages)
 
Reverse Depends:
  kernel-patch-ltt,bash 2.0
  kernel-patch-lkcd,bash 2.0
  kernel-patch-kdb,bash 2.0
  kernel-patch-acl,bash 2.0
  horde2,bash
  cron-apt,bash 2.03-6
  common-lisp-controller,bash 2.04-9
  cdcontrol,bash 2.0
  bash-doc,bash 2.03-1
  bash-builtins,bash 2.05a-12
  base-files,bash 2.03-3
  txt2regex,bash 2.04
  openmosix,bash 2.0
  mosix,bash 2.0
  mkrboot,bash
  mason,bash
  kernel-patch-ulog,bash 2.0
  kernel-patch-ttl,bash 2.0
  kernel-patch-ltt,bash 2.0
  kernel-patch-kiobuf-bigmem,bash 2.0
  kernel-patch-kiobuf,bash 2.0
  kernel-patch-kdb,bash 2.0
  kernel-patch-irc,bash 2.0
  kernel-patch-badram,bash 2.0
  htmlheadline,bash 2.04-1
  horde,bash 2.03-6
  gopherweblink,bash
  gibraltar-bootsupport,bash
  foomatic-bin,bash 2.05
  diffmon,bash 2.0
  cron-apt,bash 2.03-6
  common-lisp-controller,bash 2.04-9
  colorgcc,bash
  cdcontrol,bash 2.0
  bug,bash 2.04-1
  bash-doc,bash 2.03-1
  bash-builtins,bash 2.05a-11
  base-files,bash 2.03-3
Dependencies:
2.05a-12 - base-files (2 2.1.12) libc6 (2 2.2.4-4) libncurses5
(2 5.2.20020112a-1) grep-dctrl (0 (null)) bash-completion (0
(null)) bash-doc (1 2.05-1) bash-completion (0 (null))
2.05a-11 - base-files (2 2.1.12) libc6 (2 2.2.4-4) libncurses5
(2 5.2.20020112a-1) bash-completion (0 (null)) bash-doc (1 2.05-1)
bash-completion (0 (null))
Provides:
2.05a-12 -
2.05a-11 -
Reverse Provides:
 
Es müssen also, damit dieses Paket funktioniert, mindestens die unter „Dependencies“ aufgeführten Pakete installiert sein. Eine weitere wichtige Information sind die „Reverse Depends“. Dies sind Pakete, die von diesem Paket (<tt>bash</tt>) abhängen.
|-
|| <tt>'''stats'''</tt>
|| Über den aktuellen Cache wird eine Statistik ausgegeben. Es sind keine weiteren Argumente notwendig. Folgende Informationen werden ausgegeben:
 
fr@sushi:~$ apt-cache stats
Total Package Names : 8953 (358k)
  Normal Packages: 6872
  Pure Virtual Packages: 259
  Single Virtual Packages: 176
  Mixed Virtual Packages: 115
  Missing: 1531
Total Distinct Versions: 9133 (438k)
Total Dependencies: 47613 (1143k)
Total Ver/File relations: 19322 (309k)
Total Provides Mappings: 1889 (37.8k)
Total Globbed Strings: 110 (1273)
Total Dependency Version space: 179k
Total Slack space: 86.3k
Total Space Accounted for: 2374k
 
''Total Package Names ''- Anzahl der Paketnamen, die im Cache gefunden wurden.
 
''Normal Packages'' - Dies sind Pakete, deren Namen in einer Abhängigkeit zu einem anderen Paket stehen; hierunter fällt eine große Zahl der Pakete.
 
''Pure Virtual Packages'' - Anzahl der „virtuellen“ Paketnamen im Cache. Dies sind Pakete, die ein Paket zur Verfügung stellen, deren Name aber nichts mit diesem zu tun hat. Als Beispiel sei hier <tt>mail-transport-agent</tt> genannt: Einige Pakete (beispielsweise <tt>exim</tt>, <tt>qmail</tt> und <tt>sendmail</tt>) stellen das Paket <tt>mail-transport-agent</tt> zur Verfügung, es gibt aber kein Programm mit dem Namen <tt>mail-transport-agent</tt>.
 
''Single Virtual Packages'' - Dies ist die Anzahl der Pakete, die ein virtuelles Paket zur Verfügung stellen, das aber nur einmal im Cache auftaucht. Das virtuelle Paket <tt>X11-text-viewer</tt> wird beispielsweise nur von <tt>xless</tt> zur Verfügung gestellt.
 
''Mixed Virtual Packages'' - Anzahl der Pakete, die sowohl als virtuelle als auch als reale Pakete vorhanden sind. <tt>debconf</tt> ist als reales Paket vorhanden, wird aber auch von <tt>debconf-tiny</tt> zur Verfügung gestellt.
 
''Missing'' - Pakete, die in einer Abhängigkeit benannt werden, aber nicht im Cache zu finden sind. Dies kann vorkommen, wenn kein Zugriff auf eine komplette Debian Distribution gegeben ist oder wenn Pakete aus der Distribution entfernt wurden.
 
''Total Distinct Versions'' - Die Anzahl der Paketversionen im Cache. Diese ist im Normalfall gleich der Anzahl der gesamten Pakete. Wenn jedoch zwei Distributionen (beispielsweise „stable“ und „testing“) benutzt werden, kann es vorkommen, dass mehrere Versionen eines Pakets verfügbar sind. In diesem Fall kann die Zahl deutlich über der der gesamten Pakete liegen.
 
''Total Dependencies'' - Die Anzahl der gesamten Abhängigkeiten zwischen allen Paketen im Cache.
 
''Total Ver/File relations'' - Die Gesamtzahl an Version/Datei-Beziehungen.
 
''Total Provides Mappings'' - Die Gesamtzahl an Bereitstellungen von Mappings.
 
''Total Globbed Strings'' - Gesamtanzahl von Mustern
 
''Total Dependency Version space'' - Gesamtmenge an Abhängigkeits/Versionsspeicher.
 
''Total Slack space'' - Gesamtmenge an Slack Speicher.
 
''Total Space Accounted for'' - Gesamtmenge des Speichers.
|-
|| <tt>'''dump'''</tt>
|| Zeigt eine kurze Information zu jedem Paket an. Dies ist für den normalen Benutzer wenig sinnvoll und ist zur Fehlersuche für Entwickler gedacht.
|-
|| <tt>'''dumpavail'''</tt>
|| Zeigt eine Liste der verfügbaren Pakete.
|-
|| <tt>'''unmet'''</tt>
|| Zeigt eine Zusammenfassung aller nicht erfüllten Abhängigkeiten.
|-
|| <tt>'''show'''</tt>
|| Hat einen ähnlichen Effekt wie das Kommando <tt>dpkg --print-avail</tt> und zeigt die Paketinformationen für die angegebenen Pakete.
|-
|| <tt>'''search'''</tt>
|| Führt eine Volltextsuche über alle verfügbaren Paketdateien durch. Es können reguläre Ausdrücke benutzt werden. Die Paketnamen und Beschreibungen werden nach dem Suchbegriff durchsucht, und es werden der Paketname und die Kurzbeschreibung der entsprechenden Pakete ausgegeben. Wenn die Option <tt>--full</tt> angegeben wird, entspricht die Ausgabe der von <tt>show</tt>. Mit der Option <tt>--names-only</tt> wird die Paketbeschreibung nicht durchsucht; die Suche beschränkt sich auf den Paketnamen.
 
Mehrere Suchargumente können angegeben werden und werden dann über eine UND-Verknüpfung ausgewertet.
|-
|| <tt>'''depends'''</tt>
|| Zeigt alle Abhängigkeiten eines Pakets an. Weiterhin werden alle anderen Pakete angezeigt, die die geforderten Abhängigkeiten erfüllen können.
 
fr@sushi:~$ apt-cache depends bash
bash
  Depends: base-files
  PreDepends: libc6
  PreDepends: libncurses5
  Suggests: grep-dctrl
  Conflicts: <bash-completion>
  Replaces: bash-doc
  Replaces: <bash-completion>
|-
|| <tt>'''policy'''</tt>
|| Die Option <tt>policy</tt> zeigt zu einem Paket die installierte sowie die verfügbaren Versionen aus den erreichbaren Quellen an.
 
fr@sushi:~$ apt-cache policy bash
bash:
  Installed: 2.05b-5
  Candidate: 2.05b-5
  Version Table:
  *** 2.05b-5 0
        500 ftp://ftp.freenet.de sid/main Packages
        100 /var/lib/dpkg/status
      2.05b-3 0
        500 ftp://ftp.freenet.de testing/main Packages
        500 ftp://ftp.freenet.de sarge/main Packages
      2.05a-11 0
        500 ftp://ftp.freenet.de woody/main Packages
|-
|| <tt>'''pkgnames'''</tt>
|| Zeigt eine Liste aller Paketnamen. Optional kann eine Zeichenkette angegeben werden, die als Suchpräfix verwendet wird.
|-
|| <tt>'''dotty'''</tt>
|| Dieser Option kann eine Liste von Paketnamen mitgegeben werden. Die Ausgabe erfolgt in einem Format, das vom Programm <tt>dot</tt> aus dem Paket GraphVis ([http://www.research.att.com/sw/tools/graphviz/ http://www.research.att.com/sw/tools/graphviz/]) gelesen werden kann. GraphVis ist auch als Debian Paket verfügbar, kann also mittels <tt>apt-get</tt> installiert werden. Mit dieser Option und dem Programm <tt>dot</tt> kann eine grafische Darstellung der Paketabhängigkeiten erstellt werden. Normalerweise werden alle Abhängigkeiten verfolgt, was zu sehr großen Dateien führen kann.
 
Um die Grafik etwas zu verkleinern, kann die Zeile
 
APT::Cache::GivenOnly "true";
 
in der APT-Konfigurationsdatei <tt>/etc/apt/apt.conf</tt> hinzugefügt werden. Dies bewirkt, dass nur die auf der Kommandozeile angegebenen Pakete ausgewertet werden. Es kann passieren, dass eine sehr lange Liste von Paketen zum Abbruch des Programmes führt.
 
Das Ergebnis ist eine Grafik, die unterschiedliche Symbole für Pakete verwendet. Normale Pakete werden als schwarzes Rechteck dargestellt. Direkt abhängige Pakete (provides) werden als Trapez dargestellt. Diamant-förmige Pakete sind mixed-provides, und fehlende Pakete werden als Hexagon dargestellt. Orange-farbene Rechtecke bedeuten, dass die rekursive Suche abgebrochen wurde. Blaue Linien stellen Pre-Dependencies dar, und grüne Linien stehen für Konflikte.
 
Hier zwei kleine Beispiele dafür, wie diese Option sinnvoll eingesetzt werden kann:
 
apt-cache dotty vim | dot -Tps > packgraph.ps
 
  apt-cache dotty $(dpkg --get-selections | grep -v deinstall \
          | awk 'print $1') | dot -Tps > packgraph.ps
|-
|}
; apt-cache dotty vim – Beispiel
 
[[Image:Grafik2.png|top]]
 
Beide Beispiele erzeugen eine Postscript-Datei <tt>packgraph.ps</tt>. Diese kann beispielsweise mit dem Programm <tt>gv</tt> angezeigt werden.
 
; Suchen ohne apt-cache
 
Die aus der Bash-Shell bekannte Vervollständigung von Dateinamen (mittels '''TAB'''-Taste) kann auch auf Debian Pakete ausgeweitet werden. Hierzu ist die Datei <tt>/etc/bash_completion</tt> zu „sourcen“, beispielsweise durch das Kommando <tt>source /etc/bash_completion</tt>. Nun kann auch <tt>apt-get install </tt>durch das Drücken der Taste '''TAB''' vervollständigt werden.
 
==== Das Debian Paketformat - .deb ====
Das Debian Paketformat beinhaltet eine Vielzahl von Informationen zu jedem Paket, um sicherzustellen, dass sich jedes einzelne perfekt in das System integriert. Detailierte technische Informationen zum Aufbau des Paketformates finden sich im Abschnitt [../../debiananwenderhandbuch/debianpakete.html Debian Pakete im Detail]. Debian Paketnamen enden immer mit <tt>.deb</tt><nowiki>; somit können sie leicht von anderen Dateien oder von Paketen aus anderen Distributionen unterschieden werden. Das bekannteste Merkmal des Debian Paketformats sind die </nowiki>Abhängigkeiten (dependency) zwischen den Paketen.
 
Abhängigkeiten zwischen den Paketen erlauben es zum Beispiel einzelnen Programmen, auf gemeinsame Bestandteile anderer Pakete zuzugreifen; meist sind dies Libraries (Systembibliotheken). Dies verhindert ein unnötiges, doppeltes Installieren von Dateien. Auf einem durchschnittlichen System kann so die Zahl der installierten Dateien deutlich reduziert werden.
 
Betrachten wir zunächst einmal den einfachsten Fall: Ein Paket benötigt zwingend ein zweites Paket, um zu funktionieren. Das Paket <tt>mail-crypt</tt> ist eine Erweiterung zu Emacs, um E-Mail mit PGP zu verschlüsseln. Wenn PGP nicht installiert ist, wird auch <tt>mail-crypt</tt> nicht funktionieren. Somit wurde vom Debian Paket-Betreuer (Maintainer) dem Paket die Abhängigkeit zu PGP mitgegeben. Ebenso bedingt <tt>mail-crypt</tt> die Installation von <tt>emacs</tt>: Da es eine Erweiterung dazu ist, macht es keinen Sinn, dieses Paket allein zu installieren.
 
Weiterhin sind in den Paketbeschreibungen auch Konflikte zwischen den Paketen festgelegt. So ist es unter Debian GNU/Linux nicht möglich, zwei oder mehrere der Programme <tt>exim</tt>, <tt>smail</tt>, <tt>sendmail</tt>, <tt>postfix</tt> oder <tt>qmail</tt> zu installieren, da diese alle das virtuelle Paket <tt>mail-transport-agent</tt> zur Verfügung stellen. Die Abhängigkeiten erlauben es, dass genau ein Programm, das für den Mailtransport zuständig ist, installiert werden kann. Dann haben Sie aber die freie Auswahl zwischen den verfügbaren Paketen.
 
; Virtuelle Pakete ermitteln
 
Das Kommando <tt>apt-cache showpkg exim</tt> zeigt unter „Provides“ an, welches virtuelle Paket von exim zur Verfügung gestellt wird.
 
Nun wäre es denkbar, dass ein Programm zum Erstellen von E-Mail (beispielsweise <tt>mutt</tt>), da es ja eine Möglichkeit benötigt, auch Mails auszuliefern, beispielsweise von <tt>smail</tt> abhängt.
 
Damit würde man dem Benutzer von <tt>mutt</tt> vorschreiben, welchen MTA („Mail Transfer Agent“) er zu benutzen hat. Debian GNU/Linux-Pakete gehen auch hier einen besonderen Weg. Von den Betreuern (Maintainer) der Pakete wird zusätzlich ein „virtueller“ Name festgelegt. Die Programme <tt>exim</tt>, <tt>smail</tt>, <tt>sendmail</tt> und <tt>qmail</tt> beispielsweise verfügen noch über die Information, dass Sie einen „mail-transport-agent“ zur Verfügung stellen. Auf diese Weise ist das Paket <tt>mutt</tt> von einem virtuellen Namen und nicht von einem konkreten Paket abhängig. Somit bleibt Ihnen die freie Auswahl zwischen einem dieser Programme.
 
Das Debian Paketsystem überwacht zu jeder Zeit alle diese Abhängigkeiten und sorgt dafür, dass Ihr System in einem sicheren, lauffähigen Zustand bleibt.
 
==== debconf ====
<tt>debconf</tt> ist ein zentrales System zur Verwaltung von Debian Paketen. Es gibt auch ein selten verwendetes Programm namens <tt>debconf</tt>, dies soll jedoch an dieser Stelle nicht weiter betrachtet werden. <tt>debconf</tt> bietet eine einheitliche Schnittstelle zur Konfiguration von Debian Paketen, der Benutzer kann dabei zwischen verschiedenen Frontends wählen. <tt>debconf</tt> kann vor der Installation von Paketen die notwendigen Parameter erfragen, so dass die weitere Installation einer großen Anzahl von Paketen unbeaufsichtigt erfolgen kann. Hierzu ist es notwendig, dass APT in der Version 0.5 oder höher installiert ist, weiterhin wird das Paket <tt>apt-utils</tt> benötigt.
 
Sollen Pakete nicht vor der Installation konfiguriert werden, so kann dies in der Datei <tt>/etc/apt/apt.conf.d/70debconf</tt> angepasst werden. Wie dort beschrieben, ist einfach eine Zeile mit einem Kommentarzeichen zu versehen. Ein einzelnes Paket kann vor der Installation gezielt vorkonfiguriert werden, hierzu dient das Kommando <tt>dpkg-preconfigure</tt>. Dieses findet sich im Paket <tt>apt-utils</tt>.
 
Ist nun ein Paket installiert und wurden alle <tt>debconf</tt>-Fragen während der Installation beantwortet, so kann es nach einiger Zeit wünschenswert sein, Anpassungen an der Konfiguration vorzunehmen. Ein einfaches Neuinstallieren des Pakets führt dabei nicht zum Erfolg, da die Antworten in der <tt>debconf</tt>-Datenbank gespeichert wurden. Bei einer Neuinstallation des Pakets versucht das System zunächst, diese Antworten in der Datenbank zu finden. Ist dies erfolgreich, so werden keine Fragen zur Konfiguration gestellt. Um nun ein Paket, beispielsweise <tt>debconf</tt> selbst, neu zu konfigurieren, kann das Kommando <tt>dpkg-reconfigure</tt> eingesetzt werden.
 
<div >dpkg-reconfigure debconf</div>
 
Bei diesem Vorgang werden alle Fragen erneut angezeigt, die auch ursprünglich bei der ersten Installation von <tt>debconf</tt> gestellt wurden. Dies muss natürlich mit Administratorrechten ausgeführt werden.
 
; Frontends
 
<tt>debconf</tt> kann unterschiedliche Frontends zur Konfiguration von Paketen verwenden, diese können vom Benutzer ausgewählt werden. Folgende Frontends stehen zur Auswahl:
 
{|| class="wikitable sortable"
|-
|| '''dialog'''
|| Das standardmäßig verwendete Frontend auf Basis von <tt>whiptail</tt> oder <tt>dialog</tt>. Eine einfache grafische Oberfläche auf Textbasis.
|-
|| '''readline'''
|| Einfache, rein textbasierte Oberfläche. Es wird eine Frage gestellt, und es müssen Werte eingegeben werden. Sehr gut geeignet, um remote auf einem System zu arbeiten.
|-
|| '''noninteractive'''
|| Dies ist eigentlich gar kein Frontend, denn es werden keinerlei Fragen angezeigt. Alle Werte werden mit den Vorgabewerten aus dem Paket belegt. Es werden allerdings E-Mails an den Administrator gesendet, mit dem Hinweis, dass Pakete konfiguriert wurden bzw. dass noch Einstellungen vorzunehmen sind. Dies ist das beste Frontend, um automatische Installationen durchzuführen.
|-
|| '''gnome'''
|| Ein modernes Frontend auf Basis der GNOME- und GTK-Bibliotheken. Dieses Frontend lässt sich nur sinnvoll verwenden, wenn lokal ein X-Server installiert ist oder wenn eine entsprechende <tt>DISPLAY</tt> Variable gesetzt wurde, um den Konfigurationsdialog auf einem anderen System anzuzeigen. Ist das Anzeigen dieses Frontends nicht möglich, so wird auf ein einfacheres Frontend zurückgegriffen.
|-
|| '''kde'''
|| Ein modernes Frontend auf Basis der QT-Bibliotheken. Dieses Frontend lässt sich nur sinnvoll verwenden, wenn lokal ein X-Server installiert ist oder wenn eine entsprechende <tt>DISPLAY</tt>-Variable gesetzt wurde, um den Konfigurationsdialog auf einem anderen System anzuzeigen. Ist das Anzeigen dieses Frontends nicht möglich, so wird auf ein einfacheres Frontend zurückgegriffen.
|-
|| '''editor'''
|| Das Frontend für Unix-Freaks, die alles in einem Texteditor bearbeiten möchten. Hierbei werden nicht die Konfigurationsdateien zu einem Paket aufgerufen, vielmehr können <tt>debconf</tt>-Parameter in dem Editor verändert werden.
|-
|| '''web'''
|| Dieses Frontend verhält sich wie ein Webserver; alle Einstellungen können über einen beliebigen Browser vorgenommen werden. Dieses Frontend befindet sich noch in der Entwicklung.
|-
|}
Das von <tt>debconf</tt> verwendete Frontend kann bei einer Rekonfiguration von <tt>debconf</tt> gesetzt werden. Soll dagegen das Frontend nur für eine einzelne Aktion geändert werden, so kann auch die Umgebungsvariable <tt>DEBIAN_FRONTEND</tt> auf den gewünschten Wert gesetzt werden.
 
<div >DEBIAN_FRONTEND=readline apt-get install slrn</div>
 
Es ist auch möglich, den Kommandos <tt>dpkg-reconfigure</tt> und <tt>dpkg-preconfigure</tt> die Option <tt>--frontend=readline</tt> zu übergeben und auf diesem Wege das Frontend zu bestimmen.
 
; Prioritäten
 
Über die <tt>debconf</tt>-Prioritäten kann die „Tiefe“ der Fragen bestimmt werden. Jede Frage zu einer Konfigurationsoption ist mit einer Priorität versehen, über die der Betreuer des Pakets steuern kann, wie wichtig die Frage für das Funktionieren des Pakets ist. Wenn es Ihnen nicht so darauf ankommt, ein Paket bis ins letzte Detail anzupassen, so kann <tt>debconf</tt> dazu veranlasst werden, lediglich die essenziell wichtigen Fragen zu stellen.
 
Die Prioritäten sind dabei (in aufsteigender Priorität)
 
{|| class="wikitable sortable"
|-
|| '''low'''
|| Sehr einfache Fragen, die mit Voreinstellungen belegt sind, die in den meisten Fällen sinnvoll sind.
|-
|| '''Medium'''
|| Normale Fragen mit sinnvollen Vorgaben.
|-
|| '''High'''
|| Fragen, die keine Vorgaben haben.
|-
|| '''Critical'''
|| Fragen, die unbedingt beantwortet werden müssen.
|-
|}
Es werden immer nur Fragen mit einer Priorität angezeigt, die der gewünschten Tiefe entspricht, oder die in der Wertigkeit höher liegen. Die Priorität kann gesetzt werden, indem <tt>debconf</tt> neu konfiguriert wird oder indem die Option <tt>--priority=medium</tt> den Kommandos <tt>dpkg-reconfigure</tt> und <tt>dpkg-preconfigure</tt> übergeben wird. Alternativ kann auch die Umgebungsvariable <tt>DEBIAN_PRIORITY</tt> auf die gewünschte Tiefe gesetzt werden.
 
; debconf - Backend-Datenbank
 
<tt>debconf</tt> benutzt eine sehr flexible Struktur, um die Ergebnisse der Fragen in einer Datenbankstruktur abzulegen. In der Datei <tt>/etc/debconf.conf</tt> wird diese Anbindung an die Datenbank konfiguriert. Im Normalfall liegt diese Datenbank in Form von ASCII-Dateien auf dem lokalen Dateisystem im Verzeichnis <tt>/var/cache/debconf/</tt>. In der Konfigurationsdatei finden Sie Beispiele, wie eine Datenbank via NFS oder LDAP genutzt werden kann.
 
; debconf im Backup
 
Bei der Planung eines Backups für das neue System sollte auch das Verzeichnis <tt>/var/cache/debconf/</tt> gesichert werden. Obwohl im Verzeichnis <tt>/var/cache/</tt> lediglich Daten liegen, die laufend verändert werden, so erspart das Sichern dieses Verzeichnisses die erneuten Fragen bei der Neuinstallation des Systems.
 
; Unattended Installation
 
Bei der automatischen, unbeaufsichtigten Installation oder Aktualisierung von vielen Systemen kann es wünschenswert sein, nicht die vorgegebenen Antworten zu nutzen. Vielmehr ist eine individuelle Anpassung, meist von nur sehr wenigen Werten, wünschenswert.
 
Es gibt verschiedene Möglichkeiten, um dies zu erreichen. So kann beispielsweise eine <tt>debconf</tt>-Datenbank mit den gewünschten Informationen aufgesetzt werden, die bei der Installation verwendet wird. Der einfachste Weg zu einer solchen, mit sinnvollen Werten gefüllten Datenbank ist es, auf einem anderen System eine komplette Installation mit den entsprechenden Einstellungen durchzuführen und dann die Datenbank zu kopieren. Alternativ kann auch <tt>dpkg-preconfigure</tt> eingesetzt werden, um eine Auswahl von Paketen zu konfigurieren, ohne diese zu installieren. Natürlich kann die komplette <tt>debconf</tt>-Datenbank auch mit einem Texteditor der Wahl erstellt werden.
 
Ist die Datenbank mit den benötigten Werten vorbereitet, so ist zu überlegen, wie die zu installierenden Systeme auf diese Datenbank zugreifen können. Soll ein zentraler LDAP-Server verwendet werden, so kann bei der Installation von Paketen auf diesen zugegriffen werden, um die dort hinterlegten Werte auszulesen. <tt>debconf</tt> benutzt die beiden Umgebungsvariablen <tt>DEBCONF_DB_FALLBACK</tt> und <tt>DEBCONF_DB_OVERRIDE</tt>, um den Zugriff auf eine andere Datenbank zu steuern.
 
; Beispiel
 
<div >cat /var/cache/debconf/config.dat | \
      ssh root@target "DEBCONF_FRONTEND=noninteractive \
      DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"</div>
 
Dieses Kommando benutzt die lokale Datenbank, die via <tt>ssh</tt> auf das System gebracht wird. Dort wird die Datenbank als Fallback ausgelesen, falls lokal keine entsprechenden Antworten verfügbar sind. Dabei wird nur in die lokale Datenbank geschrieben; die via <tt>ssh</tt> nur temporär verwendete Datenbank wird ausschließlich gelesen.
 
<div >ssh -R 389:ldap:389 root@target \
            "DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"</div>
 
In diesem Beispiel wird eine über <tt>ssh</tt> getunnelte LDAP-Datenbank genutzt. Wieder wird diese Datenbank nur als Fallback, also read-only, eingesetzt.
 
<div >scp config.dat [mailto:root@target root@target]:
ssh root@target "DEBCONF_DB_FALLBACK='File{/root/config.dat}' apt-get upgrade</div>
 
In diesem Beispiel wird zunächst die Datenbank mittels <tt>ssh</tt> kopiert. Danach wird über <tt>ssh</tt> ein Update angestoßen, bei dem die zuvor kopierte Datenbank benutzt wird.
 
In allen Beispielen wird die zentrale Datenbank als Fallback eingesetzt. Dies bedeutet, dass auf diesem Wege Antworten gesetzt werden können, die auf dem Zielsystem noch nie aufgetaucht sind, aber diese Werte werden ausschließlich genutzt, wenn in anderen Datenbanken keine Informationen gefunden werden: deshalb der Name „Fallback“. Um bereits gesetzte Werte zu überschreiben, ist die Umgebungsvariable <tt>DEBCONF_DB_OVERRIDE</tt> einzusetzen. Diese bewirkt ebenfalls, dass eine andere <tt>debconf</tt>-Datenbank abgefragt wird, dies jedoch, bevor andere Datenbanken zu Rate gezogen werden.
 
; Paketentwicklung für debconf
 
Detaillierte Informationen zur Entwicklung von Debian Paketen, die die <tt>debconf</tt>-Datenbank nutzen, finden Sie in der Manpage zu <tt>debconf-devel</tt>. Im Wesentlichen kommuniziert <tt>debconf</tt> mit den Skripten über Standard-In und -Output. Es wird dabei ein einfaches, SMTP-ähnliches Protokoll verwendet. Die Fragen selbst werden in einem Template abgelegt, das vom Format her einer Debian <tt>control</tt>-Datei ähnelt.
 
; debconf-Umgebungsvariablen
 
Folgende Umgebungsvariablen können von <tt>debconf</tt> genutzt werden:
 
{|| class="wikitable sortable"
|-
|| <tt>'''DEBIAN_FRONTEND</tt> '''
|| Wird benutzt, um das Frontend zu bestimmen.
|-
|| <tt>'''DEBIAN_PRIORITY</tt> '''
|| Setzt die minimale Priorität der zu stellenden Fragen.
|-
|| <tt>'''DEBCONF_DEBUG</tt> '''
|| Aktiviert Meldungen zur Fehlersuche auf der Standard-Ausgabe. Es kann eine Facility oder ein regulärer Ausdruck (beispielsweise <tt>.*</tt> für alle Meldungen) angegeben werden. Mögliche Facilities sind: <tt>user</tt> Für den Benutzer interessante Informationen <tt>developer</tt> Für Entwickler interessante Informationen <tt>db</tt> Informationen zur Datenbank
|-
|| <tt>'''DEBCONF_NOWARNINGS</tt> '''
|| Deaktiviert Warnungen von <tt>debconf</tt>. Fehlermeldungen werden weiterhin ausgegeben.
|-
|| <tt>'''DEBCONF_TERSE'''</tt>
|| Wird dieser Wert auf <tt>YES</tt> gesetzt, so gibt <tt>debconf</tt> so wenige Meldungen wie möglich aus.
|-
|| <tt>'''DEBCONF_DB_FALLBACK</tt> '''
|| Setzt eine zusätzliche Datenbank mit geringerer Priorität. Alle anderen Datenbanken (aus <tt>/etc/debconf.conf</tt>) werden bevorzugt behandelt. Wird eine Fallback-Datenbank über diese Umgebungsvariable gesetzt, so ist diese immer nur les-, aber nicht beschreibbar.
|-
|| <tt>'''DEBCONF_DB_OVERRIDE</tt> '''
|| Setzt eine zusätzliche Datenbank mit hoher Priorität. Alle anderen Datenbanken werden erst benutzt, wenn in dieser Datenbank keine brauchbaren Informationen gefunden werden.
|-
|| <tt>'''DEBCONF_SYSTEMRC</tt> '''
|| Beim Start von <tt>debconf</tt> wird eine ggf. vorhandene Datei <tt>~/.debconfrc</tt> des Benutzers ausgewertet. Dies kann durch Setzen dieser Variablen verhindert werden.
|-
|| <tt>'''DEBCONF_FORCE_DIALOG</tt> '''
|| Mit dieser Variablen lässt sich die Verwendung von <tt>dialog</tt> statt <tt>whiptail</tt> zur Anzeige des Frontends erzwingen.
|-
|| <tt>'''DEBCONF_FORCE_XDIALOG</tt> '''
|| Das Setzen dieser Variablen führt dazu, dass <tt>Xdialog</tt> statt <tt>dialog</tt> oder <tt>whiptail</tt> verwendet wird.
|-
|}
; debconf (Kommando)
 
Neben dem zentralen System zur Verwaltung von Konfigurationsparametern <tt>debconf</tt> (siehe [../../debiananwenderhandbuch/debconf.html debconf ]) gibt es auch ein Kommandozeilenprogramm gleichen Namens.
 
Das Programm <tt>debconf</tt> führt ein Programm oder Skript aus, das normalerweise bei der Installation eines Pakets ausgeführt wird. So lassen sich Skripte bei der Entwicklung von Paketen testen. Die Syntax lautet:
 
<div >debconf [options] command [args]</div>
 
; Optionen
 
{|| class="wikitable sortable"
|-
|| <tt>'''-opackage</tt>, <tt>--owner=package'''</tt>
|| Hiermit kann bestimmt werden, zu welchem Paket das Skript gehört. So werden beispielsweise Benutzer- und Gruppenrechte korrekt gesetzt.
|-
|| <tt>'''-ftype</tt>, <tt>--frontend=type'''</tt>
|| Bestimmt das zu verwendende <tt>debconf</tt>-Frontend.
|-
|| <tt>'''-pvalue</tt>, <tt>--priority=value'''</tt>
|| Gibt die minimale Priorität der <tt>debconf</tt>-Fragen an, die noch angezeigt werden sollen.
|-
|}
Um nun beispielsweise ein Shell-Skript zu testen, kann folgendes Kommando genutzt werden:
 
<div >DEBCONF_DEBUG=developer debconf my-shell-prog</div>
 
Alternativ funktioniert aber auch:
 
<div >debconf --frontend=readline sh -x my-shell-prog</div>
 
; debconf-show
 
Mit <tt>debconf-show</tt> lassen sich gezielt Informationen zu einzelnen Paketen aus der Debconf-Datenbank extrahieren. Die Syntax lautet:
 
<div >debconf-show packagename [...] [--db=dbname]
debconf-show --listowners [--db=dbname]
debconf-show --listdbs</div>
 
Am häufigsten wird <tt>debconf-show</tt> sicher zusammen mit einem Paketnamen verwendet, um Informationen zu diesem Paket aus der Datenbank auszulesen. Hier am Beispiel Apache gezeigt:
 
<div >wasabi:/home/fr# debconf-show apache
<nowiki>* apache/server-name: hoshi.homeunix.net</nowiki>
<nowiki>* apache/document-root: /var/www</nowiki>
<nowiki>* apache/server-port: 80</nowiki>
<nowiki>* apache/enable-suexec: false</nowiki>
<nowiki>* apache/init: true</nowiki>
<nowiki>* apache/server-admin: webmaster@wasabi</nowiki></div>
 
Fragen, die dem Benutzer bereits gestellt wurden, sind am Anfang der Zeile mit einem <tt><nowiki>*</nowiki></tt> gekennzeichnet.
 
; Optionen
 
{|| class="wikitable sortable"
|-
|| <tt>'''--db=dbname</tt> '''
|| Name der abzufragenden Datenbank.
|-
|| <tt>'''--listowners</tt> '''
|| Zeigt die „Besitzer“ der Fragen in der Datenbank an. Ein Besitzer entspricht immer einem Paketnamen.
|-
|| <tt>'''--listdbs</tt> '''
|| Zeigt alle verfügbaren Datenbanken an.
|-
|}
; debconf-get-selections
 
<tt>debconf-get-selections</tt> liest die gespeicherten Informationen aus der Debconf-Datenbank und schreibt diese auf die Standard-Ausgabe. Die Syntax für diesen Befehl lautet:
 
<div >debconf-get-selections [--installer]</div>
 
Das Ausgabeformat kann direkt wieder vom Kommando <tt>debconf-set-selections</tt> eingelesen werden. Soll dies auf einem anderen System geschehen, so ist die Ausgabe in eine Datei zu schreiben und diese auf das zweite System zu transferieren. Dieses Prinzip wird auch vom Debian Installer genutzt, um eine automatische Installation zu erlauben (siehe [../../debiananwenderhandbuch/installation-etch.html#diautomatischeinstallation Automatische Installation mit dem Debian Installer]).
 
Informationen, die während der Installation des Systems gesetzt werden, sind in einer getrennten Datenbank (<tt>/var/log/debian-installer/cdebconf</tt>) abgelegt. Diese können über die einzige Option von <tt>debconf-get-selections</tt> - <tt>--installer</tt> - ausgelesen werden. Um alle Debconf-Einstellungen eines Systems in eine Datei zu schreiben, sind zwei Kommandos notwendig:
 
<div >debconf-get-selections --installer > config.cfg
debconf-get-selections >> config.cfg</div>
 
; debconf-set-selections
 
<tt>debconf-set-selections</tt> setzt oder verändert Werte in der Debconf-Datenbank. Zusätzlich werden die so mit Werten vorbelegten Fragen auch als "gesehen" markiert, so dass diese Werte nicht während der Installation des Systems oder eines Paketes abgefragt werden. Die Syntax für dieses Kommando lautet:
 
<div >debconf-set-selections dateiname</div>
 
Wie jedes gute Kommandozeilenprogramm liest <tt>debconf-set-selections</tt> zunächst aus einer Datei. Wird kein Dateiname auf der Kommandozeile übergeben, so wird versucht, aus der Standard-Eingabe zu lesen.
 
Sollen die Informationen von einem System auf ein anderes übertragen werden, so kann folgendes Kommando verwendet werden, ein funktionierendes Netzwerk zwischen beiden Systemen wird vorausgesetzt:
 
<div >debconf-get-selections | ssh systemname debconf-set-selections</div>
 
Das Format der Datei ist recht einfach aufgebaut. Zeilen ohne Inhalt werden ignoriert, Zeilen, die mit dem Zeichen <tt><nowiki>#</nowiki></tt> beginnen, sind Kommentare und werden ebenfalls nicht ausgewertet. Alle anderen Zeilen werden interpretiert und müssen vier Werte enthalten, die jeweils durch Leerzeichen getrennt sind. Der erste Wert ist der Paketname, zu dem die Frage gehört. Der zweite Wert ist der Name der Frage. Der dritte Wert ist der Typ der Frage, und der vierte Wert ist die Antwort. Hier ein einfaches Beispiel:
 
<div ><nowiki># Comment out extension_dir config from /etc/php4/apache/php.ini?</nowiki>
php4    php4/update_apache_php_ini      boolean true</div>
 
; Optionen
 
{|| class="wikitable sortable"
|-
|| <tt>'''--verbose</tt>, <tt>-v'''</tt>
|| Ausführliche Ausgabe von Informationen
|-
|| <tt>'''--checkonly</tt>, <tt>-c'''</tt>
|| Prüft die Eingabedatei auf Formatfehler, speichert keine Informationen in der Datenbank.
 
|-
|}
==== Debian package manager (dpkg) ====
<div ><tt>dpkg</tt> ([http://wiki.debian.org/dpkg http://wiki.debian.org/dpkg]) ist die Basis der Debian Paketverwaltung. <tt>dpkg</tt> steht für „Debian GNU/Linux package manager“. Da <tt>dpkg</tt> mittlerweile auch von anderen Distributionen wie Novell/SuSE und RedHat/Fedora eingesetzt wird, ist die Bezeichnung nicht mehr ganz korrekt.</div>
 
Die wichtigste Funktion von <tt>dpkg</tt> besteht darin, das System in einem stabilen Zustand zu halten. Da die Werkzeuge zur Paketverwaltung in anderen Disrtibutionen nicht den Anforderungen der Debian Entwickler genügten, wurde <tt>dpkg</tt> entworfen. Das Paketformat RPM, das u.a. von RedHat/Fedora- und Novell/SuSE-Distributionen verwendet wird, prüft lediglich, ob eine benötigte Datei vorhanden ist. Ob diese Datei in der gewünschten oder gar benötigten Version vorliegt, wird nicht geprüft.
 
Mit diesem Programm kommen Sie nur in seltenen Fällen in Berührung; meist werden Sie Frontends wie <tt>apt-get</tt> oder <tt>aptitude</tt> benutzen. Hier folgen trotzdem einige nützliche Beispiele, wie <tt>dpkg</tt> eingesetzt werden kann.
 
<tt>'''--help'''</tt>
 
Natürlich bringt auch <tt>dpkg</tt>, wie alle guten Unix-Werkzeuge, eine eingebaute Hilfefunktion mit. Mit der Option <tt>--help</tt> kann man sich einen ersten Überblick über die beachtliche Vielzahl von Optionen verschaffen.
 
<div >Usage:
  dpkg -i|--install      <deb file name> ... | -R|--recursive <dir> ...
  dpkg --unpack          <deb file name> ... | -R|--recursive <dir> ...
  dpkg -A|--record-avail <deb file name> ... | -R|--recursive <dir> ...
  dpkg --configure              <package name> ... | -a|--pending
  dpkg -r|--remove | -P|--purge <package name> ... | -a|--pending
  dpkg --get-selections [<pattern> ...]    get list of selections to stdout
  dpkg --set-selections                    set package selections from stdin
  dpkg --update-avail <Packages-file>      replace available packages info
  dpkg --merge-avail <Packages-file>      merge with info from file
 
...
  --no-force-...|--refuse-...    Stop when problems encountered
  --abort-after <n>              Abort after encountering <n> errors
 
Comparison operators for --compare-versions are:
  lt le eq ne ge gt      (treat no version as earlier than any version);
  lt-nl le-nl ge-nl gt-nl (treat no version as later than any version);
  < << <= = => >> >      (only for compatibility with control file syntax).
 
Use `dselect' for user-friendly package management.</div>
 
Die meisten Optionen haben eine kurze und eine lange Schreibweise, zum Beispiel <tt>-i</tt> oder alternativ <tt>--install</tt><nowiki>; der Einfachheit halber wird im Folgenden immer die Kurzform erwähnt. Einige wenige Optionen sind ausschließlich in der ausführlichen Version verfügbar.</nowiki>
 
; -c, --contents
 
Diese Option zeigt den Inhalt eines Debian Paketes an, hierzu muss das Paket nicht zwingend installiert sein. Als weiterer Parameter ist der Dateiname des Debian Paketes anzugeben.
 
; -i, --install
 
Mit dieser Option können Pakete installiert werden, die lokal im Dateisystem, also auch auf einer gemounteten CD-ROM, vorliegen. Hierzu ist neben der Option <tt>-i</tt> lediglich der Dateiname (ggf. inklusive Pfad) anzugeben. Wenn eine Reihe Pakete installiert werden soll, so können Sie auch ein Verzeichnis statt eines Dateinamens angeben; zusätzlich ist die Option <tt>-R</tt> anzugeben. Mit dieser wird das Verzeichnis rekursiv nach Debian Paketen durchsucht.
 
; --pending, --configure
 
Mit <tt>--pending</tt> können bereits entpackte, aber noch nicht konfigurierte Pakete endgültig konfiguriert werden. Es kann zu einem solchen Zustand kommen, wenn das System bei der Installation von Paketen auf einen Fehler trifft und abbricht. Zu diesem Zeitpunkt können aber bereits andere (eventuell wichtige) Pakete im aktuellen Installationsdurchlauf entpackt worden sein. Diese können durch Angabe des Paketnamens gezielt konfiguriert und damit abschließend installiert werden.
 
Sollen nicht nur bestimmte, sondern alle bereits entpackten Pakete dieser Prozedur unterzogen werden, so müssen Sie die Option <tt>-a</tt> oder <tt>--pending</tt> verwenden.
 
; -r, --remove
 
Mit der Option <tt>-r</tt>, für „remove“, können Pakete entfernt werden. Dazu geben Sie lediglich den Namen des Pakets oder die Namen der Pakete (durch Leerzeichen getrennt) an, das/die gelöscht werden soll(en). Diese Option löscht lediglich die Programmdateien eines Pakets. Die eigentlichen Konfigurationsdateien (die nur sehr wenig Platz auf dem Datenträger einnehmen) werden nicht gelöscht. Wird ein Paket einige Zeit später erneut installiert, so liegt die alte Konfiguration noch vor und kann weiterhin genutzt werden.
 
; -P, --purge
 
Die Option „purge“ entfernt ein Paket komplett, inklusive aller Konfigurationsdateien, aus dem System.
 
; -l, --list
 
Mit der Option <tt>-l</tt> können die tatsächlichen Paketnamen ermittelt werden. Diese weichen häufig von den eigentlichen Befehlen ab.
 
<div >surimi:~$ dpkg -l mozilla*
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Säubern/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. Konf./Halb install.
|/Fehler?=(keiner)/Halten/R=Neuinst.notw/X=beides (Status,Fehler: GROSS=schlecht)
||/ Name          Version        Beschreibung
+++-==============-==============-=============================================
ii  mozilla        1.0.0-1        Mozilla Web Browser - dummy package
ii  mozilla-browse 1.0.0-1        Mozilla Web Browser - core and browser
rc  mozilla-browse 0.0.20020226.1 An Open Source WWW browser for X and GTK+ (C
ii  mozilla-browse 0.0.20020610.0 An Open Source WWW browser for X and GTK+ (C
ii  mozilla-chatzi 1.0.0-1        Mozilla Web Browser - irc client
pn  mozilla-chatzi <keine>        (keine Beschreibung vorhanden)
pn  mozilla-chatzi <keine>        (keine Beschreibung vorhanden)
pn  mozilla-cvs    <keine>        (keine Beschreibung vorhanden)
pn  mozilla-cvs-de <keine>        (keine Beschreibung vorhanden)
ii  mozilla-dev    1.0.0-1        Mozilla Web Browser - development files
un  mozilla-dmotif <keine>        (keine Beschreibung vorhanden)
ii  mozilla-dom-in 1.0.0-1        A tool for inspecting the DOM of pages in Mo
ii  mozilla-dom-in 0.0.20020610.0 A tool for inspecting the DOM of pages in Mo
ii  mozilla-js-deb 1.0.0-1        JavaScript debugger for use with Mozilla
pn  mozilla-js-deb <keine>        (keine Beschreibung vorhanden)
rc  mozilla-locale 0.9.9-3        Mozilla German Language/Region Package.
pn  mozilla-locale <keine>        (keine Beschreibung vorhanden)
pn  mozilla-locale <keine>        (keine Beschreibung vorhanden)
ii  mozilla-mailne 1.0.0-1        Mozilla Web Browser - mail and news support
pn  mozilla-mailne <keine>        (keine Beschreibung vorhanden)
pn  mozilla-mailne <keine>        (keine Beschreibung vorhanden)
ii  mozilla-psm    1.0.0-1        Mozilla Web Browser - Personal Security Mana
pn  mozilla-psm-cv <keine>        (keine Beschreibung vorhanden)
ii  mozilla-psm-sn 0.0.20020610.0 PSM - Personal Security Manager for Mozilla
un  mozilla-smotif <keine>        (keine Beschreibung vorhanden)
pn  mozilla-snapsh <keine>        (keine Beschreibung vorhanden)
pn  mozilla-snapsh <keine>        (keine Beschreibung vorhanden)
ii  mozilla-xmlter 1.0.0-1        Mozilla Web Browser - XML enabled
pn  mozilla-xmlter <keine>        (keine Beschreibung vorhanden)
pn  mozilla-xmlter <keine>        (keine Beschreibung vorhanden)</div>
 
Problematisch ist hierbei, dass der Name des Pakets abgeschnitten wird; dies können Sie durch Setzen der Variablen <tt>COLUMNS</tt> ändern: <tt>COLUMNS=132 dpkg -l mozilla*</tt>.
 
; -s, --status
 
Hiermit kann der Status eines Pakets ermittelt werden. Es werden u.a. Informationen zum Status der Installation, der Version, der Größe, der Section und der Abhängigkeiten ausgegeben. So können sehr schnell die Ursachen für eventuelle Probleme bei der Installation von weiteren Paketen ermittelt werden.
 
<div >Package: bash
Essential: yes
Status: install ok installed
Priority: required
Section: base
Installed-Size: 1288
Maintainer: Matthias Klose <[mailto:doko@debian.org doko@debian.org]>
Source: bash (2.05b-2-8.1)
Version: 2.05b-8.1
Replaces: bash-doc (< 2.05-1), bash-completion
Depends: base-files (> 2.1.12)
Pre-Depends: libc6 (> 2.3.1-1), libncurses5 (> 5.3.20021109-1)
Suggests: bash-doc
Conflicts: bash-completion
Conffiles:
  /etc/skel/.bashrc c5f1155761187900cbb3b6554c2b2533
  /etc/skel/.bash_profile ee190fd94cb7bfe8a663447386c065e8
  /etc/bash.bashrc e218a2979b01db4e9c3ae19c94294a57
  /etc/bash_completion 14dde46ca4fb4af4d1f22f0f0fc2ef8c
Description: The GNU Bourne Again Shell
  Bash is an sh-compatible command language interpreter that executes
  commands read from the standard input or from a file.  Bash also
  incorporates useful features from the Korn and C shells (ksh and csh).
  .
  Bash is ultimately intended to be a conformant implementation of the
  IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
  .
  Included in the bash package is the Programmable Completion Code, by
  Ian Macdonald.
  .
  Statically linked.</div>
 
Für den fortgeschrittenen Systemadministrator ist an dieser Stelle interessant, dass hier auch die MD5-Checksummen der Konfigurationsdateien ausgegeben werden.
 
; Ermitteln von Checksummen
 
Um die Checksumme eines gesamten Pakets zu ermitteln, benutzt der Administrator das Programm <tt>debsums</tt>
 
<div >fr@sushi:~$ debsums ssh
usr/bin/ssh                        OK
usr/bin/scp                        OK
usr/bin/ssh-add                    OK
usr/bin/ssh-agent                  OK
usr/bin/ssh-keygen                  OK
usr/bin/ssh-keyscan                OK
usr/bin/sftp                        OK
usr/bin/ssh-copy-id                OK
usr/bin/ssh-argv0                  OK
usr/sbin/sshd                      OK
usr/lib/ssh-keysign                OK
usr/lib/sftp-server                OK
usr/share/man/man1/scp.1.gz        OK
usr/share/man/man1/ssh-agent.1.gz  OK
usr/share/man/man1/ssh-keygen.1.gz  OK
...</div>
 
; -S, --search
 
Mit der Option <tt>-S</tt> kann ermittelt werden, zu welchem Paket eine Datei gehört. Dies trifft lediglich auf bereits installierte Pakete zu. Eine Suche in nicht installierten Paketen ist auf diesem Wege nicht möglich.
 
<div >fr@surimi:~$ dpkg -S gdm.conf
gdm: /etc/gdm/factory-gdm.conf
gdm: /etc/gdm/gdm.conf
 
fr@surimi:~$ dpkg -S /etc/gdm/gdm.conf
gdm: /etc/gdm/gdm.conf</div>
 
Hierbei kann das Weglassen oder Hinzufügen des Pfades zu der gesuchten Datei zu unterschiedlichen Ergebnissen führen.
 
; -C, --audit
 
Durchsucht das System nach unvollständig installierten Paketen und versucht, sinnvolle Vorschläge zu unterbreiten, welche Schritte notwendig sind, um diese Pakete in einen funktionsfähigen Zustand zu versetzen.
 
; -L, --listfiles
 
Zeigt alle Dateien an, die zum angegebenen Paket gehören.
 
<div >$ dpkg -L bash
/.
/bin
/bin/bash
/etc
/etc/skel
/etc/skel/.bashrc
/etc/skel/.bash_profile
/etc/bash_completion.d
/etc/bash.bashrc
/etc/bash_completion
/usr
/usr/share
/usr/share/doc
/usr/share/doc/bash
/usr/share/doc/bash/completion-contrib
/usr/share/doc/bash/completion-contrib/gnatmake
/usr/share/doc/bash/completion-contrib/bitkeeper
 
...
 
/usr/share/man/man7
/usr/share/man/man7/bash-builtins.7.gz
/usr/bin
/usr/bin/bashbug
/bin/rbash
/bin/sh
/usr/share/man/man1/sh.1.gz</div>
 
; --get-selections
 
Gibt, ohne weitere Parameter, eine Liste aller installierten Pakete aus. Wird zusätzlich ein „*“ angegeben, so werden alle Pakete mit dem aktuellen Zustand ausgegeben. Dies zeigt also auch zu löschende und nicht installierte Pakete an.
 
Diese Ausgabe kann in eine Datei geschrieben werden und mittels der Option <tt>--set-selections</tt> (beispielsweise auf einem anderen System oder aus einem Backup) wieder eingelesen werden. Somit können einzelne Systeme sehr leicht dupliziert werden. Auch kann auf diesem Wege ein System nach einem Hardware-Ausfall wiederhergestellt werden.
 
Beispiel
 
<div >dpkg --get-selections \* > /tmp/PAKETLISTE</div>
 
; --set-selections
 
Liest eine zuvor mit <tt>--get-selections</tt> erzeugte Paketliste wieder ein.
 
Beispiel:
 
<div >dpkg --set-selections < /tmp/PAKETLISTE</div>
 
Abhängig von den Informationen in der Datei <tt>PAKETLISTE</tt> werden so alle Pakete aus dieser Datei in der Paketdatenbank mit einem Status gekennzeichnet. Ein darauf folgendes <tt>apt-get dselect-upgrade</tt> wird die gewünschten Aktionen durchführen.
 
; --update-avail
 
Aktualisiert die Informationen über verfügbare Pakete. Mit der Aktion <tt>--merge-avail</tt> werden die bestehenden Informationen mit den Informationen aus der angegebenen Packages-Datei zusammengeführt. Mit der Aktion <tt>--update-avail</tt> wird die alte Information durch die Information aus der Packages-Datei ersetzt. <tt>dpkg</tt> speichert alle Aufzeichnungen über die verfügbaren Pakete in <tt>/var/lib/dpkg/available</tt>.
 
Ein einfacheres Kommando, um die <tt>available</tt>-Datei in einem Aufruf abzurufen und zu aktualisieren, ist <tt>dselect update</tt>.
 
; --force-confnew
 
Sollte einmal aus Versehen eine der Konfigurationsdateien verschwunden sein oder eine andere wichtige Datei fehlen, so kann ein komplettes Paket einfach erneut installiert werden. Hierzu müssen Sie sich zunächst das betroffene Paket besorgen, beispielsweise mit <tt>apt-get -d install paket</tt>. Nun kann das Paket installiert werden. Die Option <tt>--force-confnew</tt> überschreibt dabei alle Konfigurationsdateien:
 
<div >dpkg -i --force-confnew /var/cache/apt/archives/paket.deb</div>
 
; --force-depends
 
Diese Option kann zusammen mit jeder anderen Option von <tt>dpkg</tt> eingesetzt werden, führt jedoch im Allgemeinen zu einem Versionschaos. Hiermit werden alle Abhängigkeiten eines Pakets ignoriert und die gewünschte Aktion (beispielsweise „install“) ausgeführt. Alle Warnungen des Paketmanagements werden ignoriert.
 
Wird <tt>dpkg</tt> mit dieser Option eingesetzt, so ist es kaum mehr möglich, danach <tt>apt-get</tt> sinnvoll zu benutzen, da <tt>apt-get</tt> feststellen wird, dass bestimmte Abhängigkeiten nicht erfüllt werden können. In einem solchen Fall können Sie versuchen, mit <tt>apt-get -f install</tt> die Situation zu bereinigen. Dies wird aber das zuvor mit <tt>--force-depends</tt> behandelte Paket in einen unbrauchbaren Zustand versetzen bzw. löschen.
 
; hold
 
Pakete können im Debian Paketmanagement unterschiedliche Zustände haben; einer davon ist „hold“. Pakete mit diesem Zustand werden bei einem Update nicht aktualisiert. Um eine neue Version dieses Pakets zu installieren, muss das Paket gezielt installiert werden. Ein einzelnes Paket kann mit dem Kommando
 
<div >echo <paketname> "hold" | dpkg --set-selections</div>
 
auf „hold“ gesetzt werden.
 
Sollen mehrere Pakete auf einmal in den Zustand „hold“ gesetzt werden, so kann dies wie folgt geschehen:
 
<div >dpkg --set-selections << EOF
<paketname1> hold
<paketname2> hold
<paketname3> hold
<paketname4> hold
EOF</div>
 
; „hold“ mit Aptitude
 
<tt>dpkg</tt> und Aptitude nutzen unterschiedliche Informationen zu den Paketen. Dies führt dazu, dass ein mit Aptitude auf „hold“ gesetztes Paket mit <tt>apt-get upgrade</tt> dennoch aktualisiert wird. Werden also Pakete mittels Aptitude auf „hold“ gesetzt, so müssen auch Funktionen wie „upgrade“ und „dist-upgrade“ mittels Aptitude
 
; dpkg-reconfigure
 
Mit diesem Kommando können Pakete neu konfiguriert werden, die „debconf“ (siehe [http://debconf.html/ debconf] ) zur Verwaltung der Konfigurationsdateien nutzen (dies sollte mittlerweile für den Großteil der Pakete der Fall sein). Hierzu ist neben dem Aufruf des Programmes nur noch der Paketname anzugeben.
 
Ein <tt>dpkg-reconfigure debconf</tt> konfiguriert <tt>debconf</tt> selbst neu. Hierbei kann zwischen verschiedenen interaktiven und vollautomatischen Modi gewählt werden.
 
Welche bereits installierten Pakete sich mit diesem Kommando neu konfigurieren lassen, ermittelt das Programm [http://configure-debian.html/ configure-debian ]
 
; dpkg-preconfigure
 
<tt>dpkg-preconfigure</tt> kann Pakete vor der Installation auf einem System konfigurieren. <tt>dpkg-preconfigure</tt> konfiguriert eine Anzahl von Paketen und führt dazu die <tt>debconf</tt>-Skripte dieser Pakete aus. <tt>dpkg-preconfigure</tt> kennt dabei zwei Möglichkeiten der Parameterübergabe:
 
<div >dpkg-preconfigure [options] package.deb
 
dpkg-preconfigure –apt</div>
 
; Optionen
 
{|| class="wikitable sortable"
|-
|| <tt>'''-ftype</tt>, <tt>--frontend=type'''</tt>
|| Setzt das zu verwendende <tt>debconf</tt>-Frontend.
|-
|| <tt>'''-pvalue</tt>, <tt>priority=value'''</tt>
|| Gibt die minimale Priorität der <tt>debconf</tt>-Fragen an, die noch angezeigt werden sollen.
|-
|| <tt>'''--apt</tt> '''
|| Aktiviert den „APT“-Modus. Dabei wird eine Liste von Paketen auf der Standard-Eingabe gelesen, statt diese auf der Kommandozeile zu übergeben. Normalerweise wird dies genutzt, um <tt>dpkg-preconfigure</tt> auf alle Pakete anzuwenden, bevor diese installiert werden. Hierzu ist Folgendes der Datei <tt>/etc/apt/apt.conf</tt> hinzuzufügen, falls es nicht schon vorhanden ist:
 
// Pre-configure all packages before
// they are installed.
DPkg::Pre-Install-Pkgs {
        "dpkg-preconfigure --apt –priority=low";
};
|-
|| <tt>-h</tt>, <tt>--help</tt>
|| Zeigt eine Hilfe zum Programm <tt>dpkg-preconfigure</tt> an.
|-
|}
; dpkg-divert
 
Datei-„diversions“ - im Deutschen in etwa „Umleitungen“, „Ablenkungen“ oder auch „Diversifikationen“ - erlauben es dem Debian Paketmanagement, Dateien nicht an der vorgesehenen, sondern an einer „umgeleiteten“ Stelle im Dateisystem abzulegen. <tt>dpkg-divert</tt> kann innerhalb von Debian Paket-Skripten eingesetzt werden, um eine Datei aus einem anderen Paket zu überschreiben. Dabei wird, wie gleich noch gezeigt wird, die Datei nicht tatsächlich überschrieben, sondern nur umbenannt.
 
Während der Installation eines Pakets können so einzelne Dateien, beispielsweise Programme oder Manpages, durch andere Versionen ersetzt werden. Konfigurationsdateien sind von dieser Funktionalität ausgenommen. Um Konfigurationsdateien zu managen, ist entweder ein Paket zu erstellen, das das Ursprungspaket ersetzt oder mit diesem in Konflikt steht, oder aber es ist ein Paket zu erstellen, das Teile der Konfiguration enthält und diese mit dem Hauptpaket teilt (durch entsprechende Abhängigkeiten).
 
Beispielsweise kann ein Paket während der Installation ein Programm durch eine angepasste Version ersetzen. Hierzu ist sinngemäß Folgendes in das <tt>preinst</tt>-Skript des Pakets einzufügen:
 
<div >if [ install = "$1" -o upgrade = "$1" ]; then
    dpkg-divert --package smailwrapper --add --rename \
      --divert /usr/sbin/smail.real /usr/sbin/smail
fi  </div>
 
In der Datei <tt>postrm</tt> des Pakets muss dieser Vorgang wieder rückgängig gemacht werden:
 
<div >if [ remove = "$1" ]; then
    dpkg-divert --package smailwrapper --remove --rename \
      --divert /usr/sbin/smail.real /usr/sbin/smail
fi </div>
 
Die Dateien aus dem Debian Paket bleiben unangetastet mit Ausnahme der Umbenennung.
 
Mittels <tt>dpkg-divert</tt> „markierte“ Dateien werden bei einem späteren Update nicht von Dateien aus einem aktuelleren Paket überschrieben.
 
<tt>dpkg-divert</tt> kann ausschließlich auf Dateien und nicht auf Verzeichnisse angewendet werden.
 
Mit <tt>dpkg-divert</tt> können diese Umleitungen gesetzt, angezeigt oder auch wieder gelöscht werden. Weiterhin lassen sich die ursprünglichen Namen der umgeleiteten Dateien ermitteln. Die Syntax für das Kommando <tt>dpkg-divert</tt> lautet:
 
<div >dpkg-divert [options] [--add] <file>
dpkg-divert [options] --remove <file>
dpkg-divert [options] --list <glob-pattern>
dpkg-divert [options] --truename <file></div>
 
Die möglichen Optionen von <tt>dpkg-divert</tt> lauten:
 
{|| class="wikitable sortable"
|-
|| <tt>'''--add</tt> (Optional)'''
|| Wird keine Option angegeben, so wird automatisch <tt>--add</tt> verwendet. Diese Option fügt die angegebene Datei in die Liste der zu diversifizierenden Dateien ein.
|-
|| <tt>'''--admindir <Verzeichnis></tt> '''
|| Setzt das Verzeichnis, in dem sich die Daten für <tt>dpkg</tt> befinden (normalerweise: <tt>/var/lib/dpkg/</tt>).
|-
|| <tt>'''--divert <Umlenken nach></tt> '''
|| Bestimmt einen neuen Namen für die Datei.
|-
|| <tt>'''--help</tt> '''
|| Zeigt eine kurze Anleitung zu <tt>dpkg-divert</tt> an.
|-
|| <tt>'''--local</tt> '''
|| Bewirkt, dass alle verfügbaren Versionen eines Paketes diversifiziert werden.
|-
|| <tt>'''--list [<file>]</tt> '''
|| Zeigt die bestehenden Diversifikationen an. Wird ein Dateiname angegeben, so werden nur die entsprechenden Dateien angezeigt.
|-
|| <tt>'''--package <Paketname></tt> '''
|| Der Name eines Pakets, in dem die Kopie der Datei <tt><Dateiname></tt> nicht umgeleitet wird.
|-
|| <tt>'''--quiet</tt> '''
|| Es werden keine Ausgaben auf dem Bildschirm erzeugt.
|-
|| <tt>'''--rename</tt> '''
|| Verschiebt eine Datei. Existiert die Zieldatei bereits, so wird die Aktion abgebrochen.
|-
|| <tt>'''--remove <file></tt> '''
|| Löscht die angegebene Datei aus der Liste der diversifizierten Dateien und stellt den ursprünglichen Zustand wieder her.
|-
|| <tt>'''--test</tt> '''
|| Testmodus; es werden keine Veränderungen durchgeführt.
|-
|| <tt>'''--version</tt> '''
|| Zeigt die Versionsnummer von <tt>dpkg-divert</tt> an.
|-
|}
Beim Hinzufügen von Umleitungen werden, wenn nicht anders angegeben, immer die Option <tt>--divert <Ursprungsname>.distrib</tt> und die Option <tt>--local</tt> verwendet.
 
Eine Liste der umgeleiteten Dateien wird in der Datei <tt>/var/lib/dpkg/diversions</tt> gespeichert.
 
; dpkg-statoverride
 
Mittels <tt>dpkg-statoverride</tt> können einzelne Komponenten eines Pakets mit anderen Rechten, als vorgesehen waren, installiert werden. Dies kann bei Paketen sinnvoll sein, die Programme mit einem unerwünscht gesetzten <tt>setuid</tt>-Bit installieren oder wenn Programme nur von einer bestimmten Gruppe von Benutzern ausgeführt werden sollen. Eine Komponente kann dabei jedes Objekt im Dateisystem sein, Dateien, Verzeichnisse oder auch Gerätedateien.
 
<tt>dpkg-statoverride</tt> kennt verschiedene Optionen:
 
<div ><tt>--add <user> <group> <mode> <file></tt> Überschreibt die Rechte für die Datei <tt><file></tt>. Dabei muss die Datei noch nicht existieren, wenn das Kommando ausgeführt wird. Die Informationen werden gespeichert und später bei der Installation der Datei auf dem System verändert. Benutzer- und Gruppennamen können sowohl im Klartext (also beispielsweise <tt>root</tt> oder <tt>nobody</tt>) oder auch als Nummern angegeben werden. Wird die Schreibweise mit Nummern bevorzugt, so ist das Zeichen <tt><nowiki>#</nowiki></tt> voranzustellen, also beispielsweise <tt><nowiki>#0</nowiki></tt> oder <tt><nowiki>#65534</nowiki></tt>.</div>
 
{|| class="wikitable sortable"
|-
|| <tt>'''--remove <file></tt> '''
|| Stellt die ursprünglich im Paket verwendeten Rechte wieder her.
|-
|| <tt>'''--list [<glob-pattern>]</tt> '''
|| Zeigt alle veränderten Rechte an. Wird zusätzlich ein Suchbegriff angegeben, so wird die Ausgabe auf die Veränderungen beschränkt, auf die der Suchbegriff passt.
|-
|| <tt>'''--force</tt> '''
|| Führt die gewünschte Aktion auch aus, wenn die internen Überprüfungen die Ausführung sonst nicht zulassen würden. Dies ist immer dann der Fall, wenn bereits Veränderungen an einer Datei vorliegen.
|-
|| <tt>'''--update</tt> '''
|| Aktualisiert die Rechte sofort, wenn eine Datei existiert. Wird nur bei Verwendung der Option <tt>--add</tt> ausgeführt.
|-
|| <tt>'''--quiet</tt> '''
|| Gibt weniger Informationen darüber aus, welche Veränderungen vorgenommen werden.
|-
|| <tt>'''--help</tt> '''
|| Gibt einige Informationen zur Benutzung des Programms aus.
|-
|| <tt>'''--admindir</tt> '''
|| Ändert das Verzeichnis, in dem die Datei <tt>statoverride</tt> gespeichert wird. Dies ist normalerweise das Verzeichnis <tt>/var/lib/dpkg/</tt>.
|-
|}
; dpkg-query
 
Mit <tt>dpkg-query</tt> lässt sich die Paketdatenbank auf dem System abfragen. Dabei werden alle Pakete aus der Datei <tt>/var/lib/dpkg/available</tt> berücksichtigt. Die Abfrage ersteckt sich also sowohl auf installierte als auch auf nicht-installierte Pakete. <tt>dpkg-query</tt> kennt die folgenden Optionen:
 
<div ><tt>-l</tt> oder <tt>--list Suchbegriff</tt> Zeigt alle Pakete an, wenn kein Suchbegriff angegeben wird. Ansonsten wird die Ausgabe auf die dem Suchbegriff entsprechenden Pakete beschränkt. Es können in dem Suchbegriff auch Wildcards verwendet werden. Hierbei ist darauf zu achten, dass diese nicht von der Shell interpretiert werden. Mit dem Kommando <tt>dpkg-query -l 'apache*'</tt> würden beispielsweise alle Pakete ausgegeben werden, die mit „apache“ beginnen.</div>
 
{|| class="wikitable sortable"
|-
|| <tt>'''-w</tt> oder <tt>--show Suchbegriff</tt> '''
|| Wie die Option <tt>--list</tt>, jedoch kann die Ausgabe mit der Option <tt>--showformat</tt> angepasst werden.
|-
|| <tt>'''-s</tt> oder <tt>--status Paketname</tt> '''
|| Zeigt den Status des angegebenen Pakets an. Dabei werden nur installierte Pakete berücksichtigt.
|-
|| <tt>'''-L</tt> oder <tt>--listfiles Paketname</tt> '''
|| Zeigt alle installierten Dateien aus einem Paket an. Dateien, die während der Installation durch ein Skript erzeugt werden, sind dabei nicht berücksichtigt, da diese nicht in dem Paket enthalten sind.
|-
|| <tt>'''-S</tt> oder <tt>--search Suchbegriff</tt> '''
|| Sucht nach einem Dateinamen in den installierten Paketen. Hierbei können wieder die aus der Shell bekannten Wildcards benutzt werden.
|-
|| <tt>'''-p</tt> oder <tt>--print-avail Paketname</tt> '''
|| Zeigt Detailinformationen zu dem Paket an.
|-
|| <tt>'''--license</tt> oder <tt>--license</tt> '''
|| Zeigt die Lizenz- und Copyright-Informationen zu diesem Programm an.
|-
|| <tt>'''--version</tt> '''
|| Zeigt die Versionsnummer dieses Programms an.
|-
|| <tt>'''--admindir=dir</tt> '''
|| Hiermit kann das Verzeichnis verändert werden, in dem die '''dpkg'''-Datenbank abgelegt wird. Dies sollte aber immer <tt>/var/lib/dpkg/</tt> sein.
|-
|| <tt>'''--showformat=format</tt> '''
|| Hiermit kann das Format der Ausgabe bei Verwendung von <tt>--show</tt> angepasst werden. Die Formatangabe ist eine Zeichenkette, die für jedes gefundene Paket ausgegeben wird. Paketinformationen können durch Variablen in der Form <tt>${var[;width]}</tt> angegeben werden. Die Ausgabe ist dabei immer rechtsbündig ausgerichtet, eine linksbündige Ausgabe wird durch einen negativen Wert für die Breite erreicht.Es können weiterhin die Escape-Sequencen <tt>\n</tt> (Newline), <tt>\r</tt> (Carriage Return) und <tt>\\</tt> (Backslash) eingesetzt werden.
 
|-
|}

Aktuelle Version vom 9. Oktober 2023, 18:14 Uhr

Debian/Paketverwaltung - Überblick

Beschreibung

Um Pakete auf einem Debian GNU/Linux-System zu installieren, stehen mehrere Programme zur Verfügung

dpkg
  • Neben dpkg, das auf der Kommandozeile ausgeführt wird, ist dselect das älteste von diesen mit einer Benutzeroberfläche. dselect stellt ein überaus mächtiges Programm mit vielen Möglichkeiten und allen Freiheiten dar.
  • Dies hat aber leider nicht bei allen Anwendern (gerade bei Einsteigern) zur Beliebtheit beigetragen. dselect bietet eine sehr ausführliche Online-Hilfe, aber mal ehrlich: Wer liest so etwas schon? Aber wer über einige wenige Kenntnisse von dselect verfügt, wird sehen, dass alles ganz einfach ist, und die wird Mächtigkeit dieses Werkzeugs schnell zu schätzen wissen.
apt

apt stellt die nächste Generation der Debian GNU/Linux-Installationsprograme dar.

  • Mit der Version 3.0 von Debian GNU/Linux ist die komplette Umstellung des Paketmanagements auf apt erfolgt.

aptitude aptitude ist nun die bevorzugte Methode zur Paketverwaltung auf der Konsole. aptitude unterstützt die meisten Kommandozeilenoperationen von apt-get und hat bessere Fähigkeiten bei der Auflösung von Abhängigkeiten bewiesen.

„Secure APT“ ist seit Debian 4.0 Bestandteil der Distribution.
  • Secure APT sorgt für zusätzliche Sicherheit von Debian GNU/Linux-Systemen, indem starke Kryptografie und digitale Signaturen zum Verifizieren heruntergeladener Pakete verwendet werden.
  • Das Programm apt-key wird genutzt, um dem Schlüsselring von apt neue Schlüssel hinzuzufügen.
  • Standardmäßig wird nur der Schlüssel zum Signieren des Debian Archives aus dem Paket debian-archive-keyring berücksichtigt.
  • In der Standardkonfiguration wird apt nun eine Warnung ausgeben, falls Pakete aus Quellen heruntergeladen werden, die nicht authentifiziert werden konnten.
Paketeauwahl

Unabhängig davon, welches Programm Sie zur Installation benutzen - Sie müssen in jedem Fall auswählen, welche Pakete Sie installieren möchten.

  • Dies ist bei Debian GNU/Linux keine leichte Aufgabe, denn mittlerweile umfasst die Distribution einige tausend Pakete! Um Ihnen die Auswahl zu erleichtern, wurden von den Entwicklern so genannte „ task“-Pakete zusammengestellt.
  • Diese „Gruppierung“ von Paketen vereinfacht Ihnen die Selektion.
  • Wählen Sie beispielsweise das Paket task-gnome-desktop aus, so werden alle nötigen Pakete für einen GNOME-Desktop ausgewählt und installiert.
  • Weitere Informationen zu diesen Paketen finden Sie in [../../debiananwenderhandbuch/taskpakete.html „Taskpakete“ ].

apt-get oder gnome-apt oder auch das bereits erwähnte dselect können zum Auswählen und Installieren einzelner Pakete benutzt werden.

Die Paketverwaltung unter Debian GNU/Linux stellt eines der Highlights dieser Distribution dar

Informationen zu den grundsätzlichen Vorgängen bei der Installation eines Pakets

Jedes Programmpaket enthält in der Regel einige verschiedene Dateien, die zur Funktion dieses Programms benötigt werden.
  • Hierzu gehören natürlich das Programm selbst, die Bibliotheken, Dateien mit Daten wie zum Beispiel Grafiken für Spiele, die Anleitung (Manpages) usw.
  • Bei der Installation eines Programms muss sichergestellt sein, dass alle Dateien am richtigen Platz im Verzeichnisbaum installiert werden.
Wenn Sie später ein Programm wieder von Ihrem System entfernen wollen, ist es ebenfalls wichtig zu wissen, welche Dateien zu einem Programm gehören und wo sie sich befinden.
  • Weiterhin ist festzustellen, ob Dateien installiert wurden, die mittlerweile von anderen Programmen benutzt werden.
  • In diesem Fall darf das Paket unter Umständen nicht entfernt werden.
Ebenso kann der Fall eintreten, dass ein Programm auf den neuesten Stand gebracht werden soll.
  • Bei diesem Vorgang werden Dateien aktualisiert und eventuell auch einige Dateien gelöscht, die von der neuen Version nicht mehr benötigt werden.
  • Auch dies muss so durchgeführt werden, dass nicht andere Programme danach nicht mehr funktionsfähig sind.
Das Debian GNU/Linux-Paketsystem wacht über alle diese Vorgänge und hält Ihr System immer in einem benutzbaren Zustand.

Organisation der Pakete

Debian GNU/Linux organisiert die Pakete in einer festgelegten Hierarchie
  • Unter anderem werden Bereiche mit allgemeiner, freier Software (main), die den DFSG (Debian Free Software Guidelines - [../../debiananwenderhandbuch/dfsg.html „Debian Free Software Guidelines“ ]) entspricht, und Bereiche mit Software, die nicht unter solchen freien Lizenzen steht (non-free), unterschieden.
  • Als weiterer Bereich steht contrib zur Verfügung, hier finden sich Pakete mit freier Software, die aber auf nicht-freien Paketen aufbauen.
  • Die Verantwortlichen für das Debian Projekt haben sich entschieden, den Bereich „non-free“ zukünftig nicht mehr zu unterstützen.
  • Es wird versucht, die Autoren der Software-Pakete zu überzeugen, eine freie Lizenz zu verwenden.
  • Gelingt dies nicht, so wird das entsprechende Paket in absehbarer Zeit nicht mehr auf den Debian Servern verfügbar sein.
Die nächste Ebene beschreibt die Architektur, also die Prozessorfamilie, auf der die Binärpakete laufen.
  • Auch die Sourcen (Quellcodes) zu den Paketen sind in dieser Ebene angesiedelt.
  • In der letzten Ebene finden sich diverse Verzeichnisse, in denen die eigentlichen Pakete zu Gruppen, wie zum Beispiel „Games“ oder „X11“, zusammengefasst werden.

Release

Von Debian werden zu jedem Zeitpunkt vier Release-Varianten angeboten
Die zuletzt veröffentlichte Version heißt „stable“.
  • Dort sind alle Pakete sehr gut getestet, und die jeweils aktuellsten Sicherheitsupdates sind sehr schnell verfügbar.
  • Mit einer solchen „stable“-Version ist in etwa alle zwei Jahre zu rechnen.
  • Aktualisiert wird diese Version durch „Release“-Versionen (Unterversionen wie beispielsweise 3.1 R2), die in unregelmäßigen Abständen herausgegeben werden.
  • Sicherheitsupdates sind für diese Version sehr zeitnah verfügbar.
  • Dieses stabile Release von Debian sollte als Basis für alle produktiven Systeme eingesetzt werden.
Unstable und Testing

Darüber hinaus gibt es zwei weitere Zweige, die zwar verfügbar, aber nicht vom Debian Team für den produktiven Betrieb freigegeben sind: „unstable“ (an diesem Release wird laufend weiterentwickelt) und „testing“, das der Sammelplatz für das nächste offizielle Release ist. „testing“ setzt sich aus Paketen zusammen, die nach 10 bis 14 Tagen im Zweig „unstable“ keine für das Release entscheidenden Fehler gezeigt haben und dann in den „testing“-Zweig übernommen werden.

  • Die Pakete in „testing“ haben eine gute Stabilität und können für den laufenden Betrieb auf nicht geschäftskritischen Systemen eingesetzt werden.
  • Hier sollte man aber auf kleinere Probleme und Ausfallzeiten gefasst sein.
  • Sehr aktuelle Pakete finden Sie aber eher im „unstable“-Bereich.
  • Sicherheitsupdates werden für diese Releases nicht garantiert.
  • Häufig sind entsprechende Pakete verfügbar; verlassen Sie sich aber nicht darauf.
Experimental

Für einige Pakete wird darüber hinaus manchmal „Experimental“ benutzt.

  • Dieser Zweig enthält neuere Software-Versionen, die jedoch sehr große Änderungen mit sich bringen.
  • Beispielsweise werden dort sehr neue und aktuelle Software-Pakete in die Debian Distribution integriert, oder es werden größere Debian Pakete komplett neu strukturiert.
  • Sie sollten diesen Zweig nur einsetzen, wenn Sie gute Kenntnisse über das Debian Paketmanagement haben (etwa nach der Lektüre dieses Buches ;-)).
  • Für diese Pakete gibt es keinen festgelegten Wert, wie sie in die Distribution aufgenommen werden.

Die vier Release-Varianten sind auf den Servern durch „Links“ mit den jeweiligen Release-Namen verbunden.

  • So ist beispielsweise momentan, kurz nach der Release von „Sarge“, „stable“ ein Link auf „Sarge“, „testing“ ein Link auf „Etch“ und „unstable“ ist immer ein Link auf „sid“. „sid“ steht für „still in development“.
# 
ftp> ls -l
227 Entering Passive Mode (128,101,80,133,219,159)
150 Here comes the directory listing.
lrwxrwxrwx    1 1176     1176            5 Jun 01 19:38 Debian3.0r6 -> woody
lrwxrwxrwx    1 1176     1176            5 Jun 06 18:33 Debian3.1r0 -> sarge
-rw-rw-r--    1 1176     1176          449 Jun 06 17:41 README
drwxrwsr-x    5 1176     1176         4096 Jul 30 19:34 etch
drwxrwsr-x    5 1176     1176         4096 Jul 30 19:34 etch-proposed-updates
lrwxrwxrwx    1 1176     1176           23 Jan 13  2005 experimental -> ../project/experimental
lrwxrwxrwx    1 1176     1176            5 Jun 06 18:33 oldstable -> woody
lrwxrwxrwx    1 1176     1176           22 Jun 06 18:33 proposed-updates -> sarge-proposed-updates
drwxrwsr-x    5 1176     1176         4096 Jun 16 19:34 sarge
drwxrwsr-x    5 1176     1176        12288 Jul 30 19:33 sarge-proposed-updates
drwxrwsr-x    5 1176     1176         4096 Jul 30 19:35 sid
lrwxrwxrwx    1 1176     1176            5 Jun 06 18:33 stable -> sarge
lrwxrwxrwx    1 1176     1176           22 Jun 06 18:33 stable-proposed-updates -> sarge-proposed-updates
lrwxrwxrwx    1 1176     1176            4 Jun 06 18:33 testing -> etch
lrwxrwxrwx    1 1176     1176           21 Jun 06 18:33 testing-proposed-updates -> etch-proposed-updates
lrwxrwxrwx    1 1176     1176            3 Jan 13  2005 unstable -> sid
drwxrwsr-x    5 1176     1176         4096 May 31 20:55 woody
drwxrwsr-x    5 1176     1176        57344 Jun 06 17:42 woody-proposed-updates
Frozen

Kurz vor einem neuen Release gibt es für kurze Zeit noch ein weiteres Release: „frozen“.

  • Es stellt den eingefrorenen Zustand einer „testing“-Distribution dar, kurz bevor diese zu „stable“ wird.
  • In einem „frozen“-Status, kurz vor der Freigabe eines neuen Release, wird kein neuer Code mehr akzeptiert.
  • Es werden lediglich bei Bedarf Bugfixes eingepflegt.
  • Es wird ein neuer Verzeichnisbaum im dists/-Verzeichnis angelegt und einem neuen Kodenamen zugeordnet.
  • Die eingefrorene Distribution durchläuft nun einige Monate lang Tests mit zwischenzeitlichen Updates und Zwischenversionen, die „Test-Zyklen“ genannt werden.

Distribution

Die so genannten „Distributionen“ innerhalb der gesamten Debian GNU/Linux-Distribution bezeichnen verschiedene Bereiche, die sich durch die Lizenzen unterscheiden, unter denen die Pakete in diesen Bereichen stehen.

Main Dies ist der Hauptbestandteil von Debian.
  • Diese Pakete sind unter einem Copyright veröffentlicht, das eine freie Weiterverteilung ermöglicht, und enthalten den vollständigen Quellcode.
Contrib Die Pakete in diesem Verzeichnis sind für sich frei, jedoch benötigen sie nicht-freie (Non-Free) Software oder Bibliotheken, um zu funktionieren.
  • Sie können daher nicht in den Bereich „main“ von Debian GNU/Linux einfließen.
Non-Free Pakete in diesem Verzeichnis müssen nicht unbedingt Geld kosten, jedoch haben sie einige Bedingungen, die eine Weiterverteilung der Software einschränken.
  • Beispielsweise kann ein Autor die Verbreitung der Software auf CD-ROM untersagen.

Architektur

Hier finden Sie eine Übersicht einiger von Debian GNU/Linux unterstützten beziehungsweise in der Entwicklung befindlichen Architekturen.

Bitte beachten Sie auch, dass nicht alle Architekturen auf CD-ROM im Handel erhältlich sind.

  • Am einfachsten sind CDs für die i386-Architektur zu bekommen.
  • Dies ist sowohl im Heimbereich als auch bei professionellen Anwendern die am weitesten verbreitete Hardware-Plattform.

Eine komplette Übersicht finden Sie unter http://www.debian.org/ports/.

Intel x86 / IA-32 (i386) Die erste Architektur und nicht direkt eine Portierung.
  • Mit dieser Architektur begann alles.
  • Linus Torvalds entwickelte auf Basis von Minix die ersten Zeilen Sourcecode zu Linux auf einem i386-Prozessor.
  • Debian unterstützt alle IA-32-Prozessoren, hergestellt von Intel, AMD, Cyrix und weiteren Herstellern.
Intel IA-64 (ia64) Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
  • Dieses ist die Portierung auf Intels 64-Bit-Architektur.
S/390 (s390) Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
  • Dieses ist die Portierung auf IBM S/390-Server.
DEC Alpha (alpha) Das erste Release erfolgte mit Debian 2.1.
  • Eine der länger bestehenden Portierungen und ziemlich stabil.
ARM (arm) Eine neue Portierungsbestrebung, motiviert durch Rebels (ehemals Corel) interessante „NetWinder“-Maschine.
Motorola 68k (m68k) Das erste Release dieser Portierung erfolgte mit Debian 2.0.
  • Der Debian m68k-Port läuft auf einer großen Bandbreite von Computern, die auf der Motorola 68k-Prozessorfamilie basieren - im Besonderen die Sun3-Workstation-Familie, die Apple Macintosh Personal-Computer und die Atari und Amiga Personal-Computer, aber auch einige aus dem Industriebereich stammenden VME-Bus-Boards.
MIPS (mips) Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
  • Debian wird auf die MIPS-Architektur portiert, die in SGI-Computern (debian-mips - big-endian) und Digital Decstations (debian-mipsel - little-endian) verwendet wird.
Motorola/IBM PowerPC (powerpc) Diese Portierung läuft auf vielen Apple Macintosh PowerMac-Rechnern und kann auch auf den meisten Motorola-Computern laufen. Ältere Macintosh-Rechner benutzen die m68k-Prozessoren; diese werden nicht als PowerMac bezeichnet.
  • Debian/PowerPC wurde mit Debian 2.2 (Potato) das erste Mal offiziell veröffentlicht.
  • Die Portierung läuft auf vielen der Apple Macintosh PowerMac-Modelle, den CHRP- und den PReP-Rechnern.
HP PA-RISC (hppa) Zum ersten Mal offiziell mit Debian 3.0 freigegeben.
  • Dieses ist eine Portierung auf die PA-RISC-Architektur von Hewlett-Packard, die sich in einem weit entwickelten Stadium befindet.
Sun SPARC (sparc) Zum ersten Mal mit Debian 2.1 veröffentlicht.
  • Diese Portierung läuft sowohl auf der SPARCstation-Familie von Workstations als auch auf einem Teil ihrer Nachfolger in der Sun4-Architektur.
Sun UltraSPARC (sparc64) Dies ist auch der Beginn einer Portierung auf die Sun UltraSPARC-(sun4u-) Workstation-Familie.
  • Dieser 64-Bit-Prozessor hat den Vorteil der Rückwärtskompatibilität zu seinem Vorgänger, so dass die UltraSPARC-Portierung in der Lage sein wird, Sparc-Binärfiles auszuführen.
  • Dieses Projekt braucht zurzeit Entwickler.
  • Wenn Sie einen UltraSPARC-basierenden Computer haben und helfen möchten, senden Sie bitte eine E-Mail an die Liste unter debian-ultralinux@lists.debian.org, um Ihre Mitarbeit anzubieten.
Debian GNU/Hurd (hurd-i386) GNU/Hurd ist ein völlig neues Betriebssystem, das von der GNU-Gruppe aufgebaut wird.
  • In der Tat ist GNU/Hurd die letzte Komponente, die es möglich macht, ein komplettes GNU-Betriebssystem aufzubauen, und Debian GNU/Hurd wird ein solches (vielleicht sogar das erste) GNU-Betriebssystem sein.
  • Das gegenwärtige Projekt ist auf der i386-Architektur aufgebaut, aber Sie können erwarten, dass die anderen wenig später folgen werden.
Debian GNU/NetBSD (netbsd-i386 und netbsd-alpha) Dies ist eine Portierung des Debian Betriebssystems inklusive apt, dpkg und GNU-Software auf den NetBSD-Kernel.
  • Sie befindet sich im Augenblick in einem sehr vorläufigem Stadium, aber da NetBSD ein Produktionslevel-Kernel ist, sollte sich die Verwendbarkeit von Debian GNU/NetBSD sehr rasch entwickeln.
  • Im Augenblick ist Debian GNU/NetBSD für Intel x86 am weitesten fortgeschritten, aber die Arbeit an der Unterstützung für Alpha-basierende Computer hat bereits begonnen.
Debian GNU/FreeBSD (freebsd-i386) Dies ist eine Portierung des Debian Betriebssystems auf den FreeBSD-Kernel.
  • Sie befindet sich im Augenblick in einer Vorentwicklungsphase.
Debian Beowulf Obwohl nicht wirklich eine Portierung, so wird Beowulf doch ein Ersatz für viele Großrechner in Forschung und Entwicklung sein.
  • Deshalb scheint hier der richtige Platz zu sein, um es zu erwähnen.
  • Dieses Projekt arbeitet daran, Beowulf-Cluster unter Debian laufen zu lassen.

Gruppen

Jedes Paket der Debian Distribution kann vom Betreuer (Maintainer) einem bestimmten Bereich zugeordnet werden.

  • Diese Bereiche beschreiben den hauptsächlichen Einsatzort bzw.
  • den Einsatzbereich.
  • Innerhalb eines Frontends zur Paketinstallation (beispielsweise dselect) können dann die Pakete entsprechend dieser Zuordnung ausgewählt werden.

Diese Struktur lässt sich auf den FTP-Servern oder den Debian CD-ROMs nicht ohne Weiteres zurückverfolgen, wenn nach einem Paket gesucht wird.

  • Die Bereiche sind in den Dateien Packages.gz vermerkt und werden vom Frontend auf die tatsächlichen Pfade umgesetzt.
  • Die Pakete selbst befinden sich in einer einfachen Dateisystemstruktur, die wie folgt aufgebaut ist: /pool/main/a/paketname/paket.deb.

Doch nun zu den Bereichen:

Administration Programme zur Systemadministration
Base Teile des Basissystems, wie zum Beispiel verschiedene Kernel
Communication Terminalprogramme usw.
Development Diverse Programmiersprachen, Compiler, Interpreter, Header-Dateien (C und C++) usw.
Documentation HOWTOs, FAQs und andere Dokumentation sowie Programme, um diese zu lesen
Editors Textverarbeitungsprogramme, Editoren für Programmierer
Electronics Simulatoren für elektronische Schaltungen usw.
Games Spiele
Graphics Grafikprogramme
Ham Radio Programme für Amateurfunker
Interpreters Interpreter wie Perl, Python und Tcl/Tk
Libraries Bibliotheken, die von verschiedenen Programmen genutzt werden
Mail Alles rund um E-Mail.
  • Mailserver, Mailprogramme usw.
Mathematics Mathematische und wissenschaftliche Programme
Miscellaneous Diverses, was sonst nirgends hineinpasst
Network Netzwerkserver und Clientprogramme
Newsgroups Software für öffentliche Diskussionsforen
Old Libraries Ältere Versionen von Bibliotheken
Other Operating Systems and File Systems Zugriff auf andere Betriebs- oder Dateisysteme
Shells Verschiedene Shells
Sound Alles für den guten Ton
TeX Donald Knuths Schriftsatzprogramm
Text Processing Werkzeuge zum Umgang mit Textdateien
Utilities Verschiedene Werkzeuge
Web Programme für das WWW, Server und Clients
X Window X-Server, Window-Manager und anderes

Backports

Backporting (Rückportierungen) bezeichnet den Prozess der Rückportierung von Software-Paketen aus einem neueren Release in ein älteres Release.

  • Es gibt zwei wesentliche Gründe dafür, Pakete aus anderen Releases zu portieren:

Durch den langen Release-Zyklus der stabilen Debian Version ist es manchmal wünschenswert, auf Software-Pakete aus „testing“ oder „unstable“ zuzugreifen.

  • Dies ist leider nicht direkt ohne Weiteres möglich, da Abhängigkeiten zwischen den Paketen nicht erfüllt werden.
  • Mitunter sind beispielsweise Bibliotheken nicht mehr in den benötigten Versionen in einer neueren Release vorhanden.

Auch kann eine individuelle Konfiguration bei der Übersetzung bestimmter Software-Pakete gewünscht sein.

  • Hierfür ist aber nur in wenigen Fällen ein wirklicher Backport notwendig, es kann auch auf die Version aus dem verwendeten Release zurückgegriffen werden.

Detaillierte Informationen darüber, welche Schritte für das Backporting notwendig sind, finden Sie im Backporting-HOWTO.


Anhang

Siehe auch


Dokumentation

Links

Projekt
Weblinks