Das Debian Paketsystem

Ein bißchen Theorie

Eigenschaften des Paketsystems

Pakettypen

Binary Pakete Pakete mit Vorcompilierte Programmen
Source Pakete Pakete mit dem Quellcode des Programms
Taskpakete Leeres Paket mit Abhängigkeiten zu anderen Paketen die zusammen für einen bestimmten verwendungszweck bestimmt sind. (zb. X Window System, Samba)
Virtuelle Pakete Keine realen Pakete sondern können von mehreren Paketen zur Verfügung gestellt werden erfüllen können (zb. HTML-Dokumentation benötigt das Virtuelle Paket 'www-browser lynx, w3m und weitere können alle diese Abhängigkeit erfüllen

Namesbedeutung von Paketen

Aus dem Paket gimp_1.0.3-3.deb können wir folgende Informationen entnehmen

gimp Name des Programms
1.0.3 Version des Programms
3 Release des Debian Paketes

Aufbau eines Debian Paketes

Der Inhalt eines mit ar gepacktem Debian Paketes läßt sich mit ar -tv anschauen

rw-r--r-- 0/0 4 Jan 8 04:11 2000 debian-binary
rw-r--r-- 0/0 14105 Jan 8 04:11 2000 control.tar.gz
rw-r--r-- 0/0 2864457 Jan 8 04:11 2000 data.tar.gz

Die Dateien haben folgende Bedeutung

debian-binary In dieser datei wird bestimmt für welche Version von dpkg dieses Paket geeignet ist
control.tar.gz Hier befinden sich Informationen über die Konfigurationdateien und was nach oder vor der Installation bzw. Entfernung gemacht werden soll
data.tar.gz In diesem Archiv befinden sich die eigentlichen Daten

Zustände von Debian Pakete

installed Das Paket ist installiert
not installed Das Paket ist nicht installiert
config Das Paket wurde entfernt die Konfigurationsdateien wurde jedoch nicht gelöscht. Dies wird standartmässig bei der Entfernung eines Paketes gemacht
unpacked Das Paket wurde zwar entpackt jedoch nicht konfiguriert
half installed Beim entpacken trat ein fehler auf
half configured Das Paket wurde entpackt beim konfigurieren trat allerdings ein Fehler auf

Das Versionen System von Debian

Debian besteht aus folgenden 2 Distributionen

stable Stabiles und sicheres Release von Debian das als fertig entwickelt angesehn wird
unstable Entwicklerversion in der Pakete hinzugefügt werden können

In einigen Phasen kommen aber noch zwei Distribution hinzu
frozen Eingefrorenes System in der keine Pakete mehr hinzugefügt sondern nur abgestimmt werden dürfen
testing Zum testen freigebene als stabil angesehene Version

Zusätzlich bekommt jede Version noch einen Codenamen und eine Versionsnummer

Distribution Codename Versionsnummer
stable Potato 2.2
testing woody 2.3
unstable sid 2.4

Struktur eines Debian Servers

Zuerst wird zwischen den Distributionen stable, unstable und testing unterschieden. Allerdings sind dies immer symbolische Links auf die entsprechenden Codenamen.

Dann wird die Distribution in verschiedene Sections eingeteilt

main Hauptteil der Distribution. Nur unterhalb von main befindet sich Software der offiziellen Debian Distribution bei denen garantiert werden kann das sie mit den Debian Richtlinien übereinstimmt
contrib Pakete die aus unterschiedlichen Gründen nicht mit den Debian Richlinien übereinstimmen
non-free Software die nicht frei verteilt werden darf

Nun wird noch zwischen verschiedenen Architekturen unterschieden

binary-... Binary Pakete für die bezeichnete recher Architektur
binary-all Plattformunabhängige Binary Pakete
disks-... Bootdisketten für die jeweilige Architektur
source Quellpakete

Als letztes werden die Pakete noch in verschiedene Kategorien eingeteilt

admin base comm devel
doc editors electronics games
graphics hamradio interpreters libs
mail math misc net
News oldlibs otherosfs science
shells Sound tex text
utils web x11

Pakete mit Hilfe von md5sum auf Fehler überprüfen

Jedes Paket besitzt eine Checksumme mit hilfe dieser lässt sich die komplette Quelle sowie einzelne Pakete auf Fehler überprüfen. Die ganze Quelle lässt sich mit

md5sum -c md5sum.txt

überprüfen. Um selber eine Checksumme einer Datei zu erstellen benutzt man den Befehl

md5sum text.txt > md5sum.txt

Pakete verwalten mit DPKG

Mit dpkg -i paketname lassen sich Pakete installieren. Für die Installation der Pakete muss man den Pfadnamen kennen. Wenn man den nicht kennt muss man folgendes machen.

mount /cdrom

find /cdrom -name "biff*"

Dann sollten man folgende Ausgabe sehen.

/cdrom/dists/potato/main/binary-i386/mail/biff_0.10-3.deb

dpkg -i /cdrom/dists/main/binary-i386/mail/biff_0.10-3.deb

Um ein das Paket wieder zu löschen muss man den Befehl dpkg -r biff benutzen.

Um auch die Konfigurationsdateien bei der Entfernung zu löschen benutzt man den Befehl dpkg --purge biff

Was passiert bei der Installation eines Paketes?
Überprüfung von Konflikten: Es wird überprüft ob Konflikte vorliegen wenn ja wird die Installation abgebrochen
Vor der Entfernung/Aktualisierung Es wird zunächst überprüft ob es sich um eine Aktualisierung oder Entfernung handelt. Je nachdem werden bestimmte Scripte zur Vorbereitung ausgeführt. Bei der Entfernung werden diese Scripte als prerm Scripte bezeichnet
Vor der Installation Es wird, falls vorhanden, zur Überprüfung aller Vorrausetzungen noch das sog. preinst Script ausgeführt.
Auspacken des Paketes Zur Installation wird das Paket mit ausgepackt. Weiterhin wird bei einer Aktualisierung das postrm Script ausgeführt mit dem nochmal die alte Version restlos vom System entfernt werden kann.
nach der Installation Das Installierte Paket wird konfiguriert. Als letztes wird das System durch das postinst Scipt angepasst

Informationen über Pakete einholen mit dpkg

Mit dpkg kann man sich alle installierten Pakete anzeigen lassen dazu verwendet man den Befehl dpkg --list. Dann sollte man diese Ausgabe erhalten.

||/ Name           Version        Description
+++-===========-===========-============================================
ii  aalib1         1.2-25         ascii art library
ii  adduser        3.11.1         Add users and groups to the system.
ii  ae             962-26         Anthony's Editor -- a tiny full-screen 
ii  alsa-base      0.4.1i-5       ALSA driver common files
Die 3 ersten Zeichen sagen geben einige Informationen über das Paket und zwar

  1. Beschreibt den Wunschstatus des Paketes, der wird mit den Anfangsbuchstaben der Wörter unknown, install, remove, purge symbolisiert
  2. Beschreibt den Status den das Paket wirklich hat, dazu werden wieder die Anfangsbuchstaben der Wörter not (installed), config-files, unpacked, failed-config, half-installed.
  3. Zeigt an ob Fehler vorliegen

Der Befehl dpkg --listfiles gimp zeigt an wo die Dateien eines Paketes kopiert werden.

Wenn man wissen zu welchem Paket ein bestimmtes Programm gehört kann man das mit dpkg -S ls machen

Mit dpkg kann man noch viel mehr machen die wichtigsten Optinen sind hier aufgelistet

-c Listet alle Dateien auf die installiert würden
-I Liefert diverse Informationen über das Paket
-e extrahiert die Scripte die vor bzw. nach der Installation ausgeführt werden
-x entpackt das Paket
-X Wie bei -x es werden jedoch die extrahierten Dateien angezeigt

Es ist möglich mit dpkg den Wunschstaus eines Paketes auszulesen.

Durch dpkg --get-selection > selections wird der Wunschstaus aller Pakete in die Datei selection geschrieben.

Mit dpkg --set-selection < selections kann wiederum die in der Datei selections gespeicherte Wunschstaus der Pakete wieder in die Paketdatenbank kopiert.

Apt - Intelegenz für dpkg

Die nächste Generation der Paketverwaltung stellt apt dar. Apt selektiert bzw. verwaltet die Pakete die danach von dpkg installiert werden. Apt bietet folgende Voteile

Konfiguration von Apt

Bei Apt muss zuerst das Installationsmedium bestimmt werden das geht sehr leicht mit

apt-setup

Um eine CDRom hinzufügen wird der Befehl apt-cdrom add verwendet.

Um manuell eine Installationsquelle hinzuzufügen muss die Datei /etc/apt/sources.list bearbeitet werden. Der Eintrag muss folgendermaßen aussehen Typ URI Distribution Abteilung.

Pakete installieren mit apt-get Die Pakete werden apt-get installiert dazu muss man nur den Paketnamen kennen. Dazu wird einfach folgender Befehl verwendet.

apt-get install gimp

Damit wird das Binary Paket installiert. Bei eventuellen Abhängigkeiten wird gefragt ob die benötigten Pakete ebenfalls installiert werden sollen. Um die Quellen eines Paketes zu installieren wird der Befehl

apt-get source gimp

Damit man ein Paket auch ohne den genauen Pfad installieren kann wird der Paketname, sowie weitere Informationen, eines Paketes aus der Datei Packages.gz gelesen.

Manchmal ändern sich die Pakete der Installationsquelle dann muss die Paketdatenbank aktualisiert werden das geschieht mit

apt-get update

Die Daten über die Pakete wird dann aus der Packages.gz der entsprechenden Quelle gelesen.

apt-get upgrade

Aktualisiert sämtliche Pakete auf dem System

apt-get dist-upgrade

Aktualisiert die Pakete in einer bestimmten Reihenfolge und bewegt sich in engem Maße über die Abhängigkeiten hinaus. Wird dazu benutzt um die komplette Distribution zu wechseln.

Paketcache zu löschen wird folgendes eingegeben

apt-get clean

apt-get autoclean

Mit diesem Befehl werden alle Pakete aus dem Cache gelöscht dessen Quellen nicht mehr verfügbar sind.

Mit Paketinformationen arbeiten - apt-cache

apt-cache show gimp

Zeigt allgemeine Informationen über das Paket an.

apt-cache search gimp Sucht die Paketdatenbank nach dem angegebenen Paket ab. Durchgesucht werden Namen und Beschreibungen der Pakete.

apt-cache search --names-only "gimp"

Sucht in der Datenbank nur nach dem Namen

apt-cache depends gimp

Zeigt die Abhängigkeiten des Paketes an.

apt-cache showpkg gimp

Gibt ausführlichere Informationen über die Abhängigkeiten

Oberflächen zur Installation

Apt bzw. dpkg stellen nur das System zur Installation dar. Es gibt aber auch eine Menge einfacher zu bedienender Oberfächen die auf dpkg bzw. apt aufbauen.

tasksel Oberfläche zur Installation von Taskpaketen
dselect Standardoberfläche zur Installationen von Paketen
Aptitude Apt basierende Installationstool
gnome-apt Grafischer Apt Client
console-apt weiterer Apt Client

Weitere Informationen

Apt Dokumentation in /usr/doc/apt/

Das Debian Anwenderhandbuch

Debian GNU/Linux - Grundlagen, Installation, Administration und Anwendung Peter H. Ganten