Network Mapper

Von Fyodor bis zur Sicherheit unter FreeBSD, siehe auch FreeBSD Security Information.

Network Mapper

Nmap ist ein Werkzeug zum Scannen und Auswerten von Hosts und fällt somit in die Kategorie der Portscanner. Der Name steht für Network Mapper.
Hier finden sie die original nmap Homepage incecure.org (englisch)
ein Nmap-Tuotrial:
Portscanner sind eines der wichtigsten Arbeitsmittel von Administratoren. Dieses Tutorial beschreibt den Einsatz des populären Portscanner Nmap unter Windows und Linux.
Tutorial von Mirko Kulpa, 01.05.2005 weiterlesen

Sicherheit unter FreeBSD
Dieses Kapitel bietet eine Einführung in die Konzepte der Systemsicherheit. Neben einigen Daumenregeln werden weiterführende Themen wie S/Key, OpenSSL und Kerberos diskutiert. Die meisten der hier besprochenen Punkte treffen sowohl auf die Systemsicherheit sowie die Internetsicherheit zu. Das Internet hat aufgehört ein “friedlicher” Ort zu sein, an dem Sie nur nette Leute finden werden. Es ist unumgänglich, dass Sie Ihre Daten, Ihr geistiges Eigentum, Ihre Zeit und vieles mehr vor dem Zugriff von Hackern schützen.. weiterlesen

Wireshark Tutorial Teil 1 (Ethereal)

Wireshark (vormals Ethereal) ist ein Netzwerksniffer. In vielen Fehlersituationen im Netzwerk erleichtert Wireshark das Auffinden der Fehlerquelle. Diese Tutorial erklärt den Einsatz der freien Software an Hand von praktischen Beispielen.

Wireshark Tutorial Teil 1 (Ethereal)

Dieses Tutorial beschreibt die Fehlersuche in Netzwerken mit Hilfe eines Sniffers. Ein Packet-Sniffer ist eine Software, die den Datenverkehr im Netzwerk aufzeichnet, die Inhalte der Datenpackte dekodiert und lesbar darstellt. Wenn Sie also erfahrn möchten, warum der DSL-Router ständig eine Verbindung mit dem Internet aufbaut oder sehen möchten mit welchen Servern ein Programm kommuniziert, sind Sie hier genau richtig…

Siehe auch Etheral und natürlich
Wireshark
Advanced I/O Graphing

1.103 GNU und Unix Kommandos

lupus

Quelle für 1.103 Bild

Bereich aus den Unterlangen für die Linux Zertifizierung LPIC-1 [101]
Dieses Thema enthält acht definierte Ausbildungsziele, die sich alle um die grundlegenden Unix/Linux Kommandos drehen. Wichtige Elemente sind hier also sowohl die BASH, als auch die Kommandos zum Kopieren, Verschieben, Löschen von Dateien und Verzeichnissen. Dazu kommen die grundlegenden Unix-Texttools. Neu hinzugekommen ist das Thema vi, das früher im zweiten Teil behandelt wurde.

Alle Artikel zur LPIC unterliegen der GNU Free Documentation License.

Quellen, Weblinks, ähnliche Artikel:

BASH Shell Programmierung

1.102.6 Red Hat Package Managers

zurück zu 1.102 Installation und Paketmanagement
Prüfungskandidaten sollten in der Lage sein, Paketmanagement auf Linuxdistributionen, die RPM-Pakete für die Paketverwaltung verwenden, durchzuführen. Dieses Lernziel beinhaltet die (Neu-)Installation, das Update und das Entfernen von Paketen sowie das Abfragen von Status- und Versionsinformationen. Ebenfalls enthalten ist das Abfragen von Paketinformationen wie Abhängigkeiten, Integrität und Signaturen. Kandidaten sollten auch in der Lage sein, zu bestimmen, welche Dateien von einem Paket zur Verfügung gestellt werden, und das Paket zu finden, dem eine bestimmte Datei entstammt.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

* /etc/rpmrc
* /usr/lib/rpm/*
* rpm
* grep

Die meisten heutigen Linux-Distributionen haben das Paketformat von RedHat übernommen, weil es eine sehr weitreichende Verwaltung der installierten Software ermöglicht. Dazu zählen unter anderem die korrekte Installation und Deinstallation, die Informationen über installierte Programme und die Verifikation, daß bestimmte Pakete tatsächlich das enthalten, was sie vorgeben. Die gesamte Verwaltung der Red-Hat Pakete wird durch ein Programm realisiert, das den Namen rpm trägt. Auch Nicht-RedHat Distributionen unterstützen dieses Programm.

Das Prinzip der RPM-Verwaltung
Jedes RedHat Paket hat einen Dateinamen, der auf .rpm endet. Die Dateinamensstruktur ähnelt der von Debian:

Programmname-Versionsnummer.Architektur.rpm

Wobei Programmname der Name des Programmes (oder des Paketes) ist, unter dem es später dann auch angesprochen werden kann, Versionsnummer ist die Version des Programms (oder Paketes) und Architektur bezeichnet die Hardwarearchitektur, für die dieses Paket gedacht ist, also etwa i386 für die PC-Architektur.

Jedes RPM-Paket enthält neben den zu installierenden Dateien wie Debian-Pakete vier Scripts, die jeweils vor und nach der Installation und Deinstallation ausgeführt werden. Zusätzlich existieren Informationen über das Paket und die Abhängigkeiten, die die darin enthaltenen Programme besitzen.

Im Verzeichnis /usr/lib/rpm liegen die verschiedenen Hilfsmittel, die das rpm-Programm benötigt und unter /var/lib/rpm finden sich die verschiedenen Datenbanken über die installierten Pakete. Im Gegensatz zu Debian werden diese Datenbanken in einem proprietären Format abgespeichert, das nur mit dem rpm-Programm zugänglich ist.

Installieren und deinstallieren von Paketen
Eine der Hauptaufgaben des rpm-Programmes ist das Installieren und Deinstallieren von Paketen. Dazu dienen die folgenden Befehle.

Installieren eines Paketes
Um eine bestehende .rpm-Datei zu installieren, wird folgender Befehl verwendet:

rpm -i | –install [Optionen] Paketdatei

das -i | –install bedeutet, daß entweder ein -i oder ein –install angegeben wird. Mögliche Optionen sind:

–nodeps
Die Überprüfung von Abhängigkeiten wird abgeschalten.
–noscripts
Es werden keine pre- oder postinstall Scripts abgearbeitet.
–test
Die Installation wird nur simuliert, keine Dateien werden installiert.
–excludedocs
Die im Paket enthaltenen Dokumentationen werden nicht mitinstalliert.
–replacepkgs
Die Installation wird durchgeführt, auch wenn schon Teile installiert sind.
–replacefiles
Die Installation wird auch durchgeführt, auch wenn dabei Dateien überschrieben werden, die von anderen Paketen stammen.
–oldpackage
Erlaubt ein Upgrade von älteren Versionen als die bereits installierten.
–force
Entspricht der Kombination von –replacepkgs –replacefiles –oldpackage.

Vorsicht ist geboten, wenn die Überprüfung der Abhängigkeiten abgeschalten wird, oder das zwingende Installieren von Paketen aktiviert wird. Das kann zu Inkonsistenzen des Systems führen und sollte nur verwendet werden, wenn man genau weiß, was man tut.

Deinstallieren eines Paketes
Ein Paket wird mit folgendem Befehl deinstalliert:

rpm -e | –uninstall [Optionen] Paketname

Auch für die Deinstallation gibt es einige Wichtige Optionen:

–nodeps
Die Überprüfung von Abhängigkeiten wird abgeschalten.
–noscripts
Es werden keine pre- oder postuninstall Scripts abgearbeitet.
–test
Die Deinstallation wird nur simuliert, keine Dateien werden gelöscht.
–allmatches
Deinstalliert alle Pakete, auf die das Namensmuster zutrifft. In diesem Fall ist Paketname also ein Muster und nicht ein Paketnamen.

Upgrade eines Paketes
Wenn eine neue Version eines bereits installierten Programmes aufgespielt werden soll, so kommen zwei verschiedene Techniken zum Einsatz:

rpm -U|–upgrade [Optionen] Paketdatei

Als Optionen kommen exakt die selben Optionen wie beim Installieren zum Einsatz. Der Befehl entspricht im Übrigen genau dem, der zum Installieren benutzt wird, nur daß eventuell vorher existierende Versionen des Paketes vor der Installation entfernt werden.

rpm -F|–freshen [Optionen] Paketdatei

Dieser Befehl, der auch wieder die selben Optionen wie beim Installieren kennt, installiert die angegebene Paketdatei nur, wenn eine ältere Version des selben Programms vorher schon installiert war. Dann verhält er sich wie der vorige (-U)

Abfage von Paketinformationen
Die generelle Form, wie Paketinformationen abgefragt werden, beginnt immer mit einem -q oder –query. Dem folgen bestimmte andere Befehle, die dann die eigentliche Abfrage stellen.

Wenn ein normaler Querry-Befehl angegeben wird, so bezieht er sich auf schon installierte Pakete. rpm durchsucht also nicht eine bestimmte Paketdatei, sondern die Datenbanken, in denen die Informationen über installierte Pakete liegen. Soll aber Information über eine Paketdatei erfragt werden, die noch nicht installiert ist, so muß die Option -p angegeben werden. Statt der Angabe eines Paketnamens ist dann die Angabe einer Paketdatei notwendig.

Abfrage von Versionsinformationen
Um die Versionsnummer eines installierten Paketes abzufragen wird einer der folgende Befehle benutzt:

rpm -qi Paketname
rpm –query –info Paketname

Soll stattdessen die Versionsinformation eines nicht installierten RPM-Paketes erfragt werden (was eigentlich unnötig ist, da diese Information im Dateinamen schon vorliegt) kommt einer der folgenden Befehle zum Einsatz

rpm -qi -p Paketdatei
rpm –query –info –package Paketdatei

Natürlich können die langen und kurzen Optionen auch durcheinander benutzt werden wie –query -i oder -q –info.

Neben der reinen Versionsinformation werden auch noch andere Paketinformationen ausgegeben. Wenn tatsächlich nur die Information über die Version abgefragt werden soll, kann auch der eingebaute Variablensubstitutionsmechanismus benutzt werden:

rpm -q Paketname –queryformat „%{VERSION}n“

Auf diese Art und Weise können beliebige Informationen in einem beliebigen Format ausgegeben werden. Eine komplette Liste aller so benutzbaren Variablensubstitutionen ist mit dem Befehl

rpm –querytags

einsehbar. In der gegenwärtigen Version sind es 98 verschiedene Typen wie etwa NAME, VERSION, RELEASE, DESCRIPTION, SIZE, VENDOR, FILENAMES, …

Auflisten aller Dateien eines Paketes
Oft soll überprüft werden, welche Dateien ein bestimmtes Paket geliefert hat. Mit dem Befehl

rpm -ql Paketname

wird eine Liste aller Dateien des angegebenen Paketes ausgegeben. Statt -l kann auch –list verwendet werden. Soll stattdessen wieder eine noch nicht installierte Paketdatei untersucht werden, so gilt wieder der Parameter -p

rpm -ql -p Paketdatei

Die Ausgabe erfolgt auf die Standard-Ausgabe, kann also problemlos mit Tools wie grep weiterverarbeitet werden.

Auflisten der Dokumentationsdateien eines Paketes
Um nur die Dateien eines Paketes aufzulisten, die reine Dokumentationsdateien (Handbuchseiten, READMEs, …) sind, existiert der Befehl

rpm -qd Paketname

oder wieder mit langen Optionen –docfiles statt dem d. Auch dieser Befehl ist mit -p auf eine Paketdatei anwendbar.

Auflisten der Konfigurationsdateien eines Paketes
Analog zur Ausgabe der Dokumentationsdateien gibt es eine Möglichkeit nur die Konfigurationsdateien auszugeben:

rpm -qc Paketname

oder wieder mit langen Optionen –configfiles statt dem c. Auch dieser Befehl ist mit -p auf eine Paketdatei anwendbar.

Auflisten der Scriptdateien eines Paketes
Manchmal ist es auch interessant, herauszufinden, was die Installatiopsscripts eines Paketes eigentlich tun. Hierfür gibt es den Befehl

rpm -q –scripts Paketname

Er listet hintereinander alle vier Scripts auf die Standard-Ausgabe, sollte also entweder in eine Datei umgeleitet oder an less weitergepiped werden.

Gerade dieser Befehl ist natürlich wichtig für noch nicht installierte Paketdateien, um vorher sicherzustellen, daß das Script nichts unerwünschtes macht. Also steht uns auch hier wieder die Option -p zur Verfügung.

Abfragen über installierte Pakete
Die nächsten zwei Befehle beziehen sich nur auf bereits installierte Pakete, sind aber auch Query-Formen des rpm Programms.

Auflisten aller installierten Pakete
Wenn einmal nicht klar ist, welche Pakete bereits installiert sind, so kann rpm auch eine Liste aller installierten Pakete ausgeben. Das geschieht mit dem Befehl

rpm -qa

oder

rpm -q –all

rpm verwaltet auch bestimmte Gruppen, so daß auch Abfragen möglich sind, die alle installierten Pakete einer Gruppe ausgeben:

rpm -qg Gruppe

oder

rpm -q –group Gruppe

Diese Ausgaben können natürlich sehr umfangreich sein, können aber wiederum z.B. mit grep durchsucht werden. Wenn z.B. erforscht werden soll, welche Pakete installiert sind, die etwas mit dem Editor joe zu tun haben, können wir einfach schreiben

rpm -qa | grep joe

Die Ausgabe wäre dann z.B.:

joe-2.8-154

Daraus können wir jetzt weitere Informationen gewinnen, mit einem der oben genannten Abfragemöglichkeiten.

Aus welchem Paket stammt eine bestimmte Datei?
Oft ist einfach die Frage, aus welchem Paket eine bestimmte Datei stammt. Auch diese Frage lässt sich mit rpm lösen.

rpm -qf Dateiname

oder

rpm -q –file Dateiname

rpm durchsucht jetzt seine Datenbanken nach diesem Dateinamen und gibt uns das Paket zurück, aus dem diese Datei stammt.

Abhängigkeiten
Oft benötigen bestimmte Pakete andere Pakete, um zu funktionieren. Diese Abhängigkeiten sind auch mit rpm herausfindbar.

Welche installierten Pakete benützt ein bestimmtes Paket?
Wenn ein Paket entfernt werden soll oder eine Datei gelöscht werden soll, dann stellt sich die Frage, ob das Paket bzw. die Datei nicht noch von einem anderen Paket benötigt werden würde. Mit dem Befehl

rpm -q –whatrequires Paket

oder

rpm -q –whatrequires Datei

kann herausgefunden werden, welches installierte Paket das angegebene Paket oder die angegebene Datei benötigt.

Welche Pakete werden von einem bestimmten Paket benötigt?
Umgekehrt kann es auch interessant sein, welche Libraries und andere Pakete von einem bestimmten Paket benötigt werden. Mit

rpm -qR Paketname

oder

rpm -q –requires Paketname

wird eine Liste aller Libraries und Pakete ausgegeben, die von dem angegebenen Paket benötigt werden.

Sicherheitsabfragen
Wenn Pakete installiert werden sollen, dann kann es interessant sein, ob diese Pakete wirklich aus der Quelle kommen, aus der sie vorgeben zu kommen. Es wäre ja auch denkbar, daß jemand ein Paket mit einem Trojanischen Pferd einschmuggeln will, und dazu ein echtes Paket mit seinem Paket austauscht. Auf der anderen Seite kann der Inhalt eines Paketes auch durch Übertragungsfehler unbeabsichtigt verfälscht werden. Gegen beide dieser Gefahren kann mit rpm vorgegangen werden.

Verifizierung der Paketintegrität eines Paketes
Eine Paketverifizierung vergleicht die Informationen, über die installierten Dateien eines Paketes mit den Informationen über diese Dateien, die in den Metadaten des Paketes in der Paketdatenbank gespeichert sind. Neben anderen Dingen vergleicht die Verifizierung die Größe, dei MD5-Prüfsumme, Zugriffsrechte, Typ, Eigentümer und Zugriffsrechte jeder Datei. Jede Diskrepanz wird dargestellt.

rpm -V |–verify Paketname

Das Format der Ausgabe ist eine acht Zeichen lange Zeichenkette, ein mögliches „c“ (für Konfigurationsdatei) und der Dateiname. Jedes der acht Zeichen bezeichnet das Ergebnis eines Vergleichs zwischen den Attributen einer Datei und denen, die in der Paketdatenbank gespeichert sind. Ein einfacher Punkt (.) bedeutet, daß der Test durchgelaufen ist, während ein Fragezeichen (?) anzeigt, daß der Test nicht durchgeführt werden konnte (z.B. weil Zugriffsrechte zum Lesen gefehlt hatten). In jedem anderen Fall repräsentieren die Buchstaben Fehler des jeweiligen Verifizierungstests:

S
(Size) Die Dateigröße stimmt nicht
M
(Mode) Der Zugriffsmodus stimmt nicht
5
Die MD5 Prüfsumme stimmt nicht
D
Die Major/Minor Numer der Gerätedatei stimmt nicht
L
ReadLink(2) Systemaufruffehler
U
Eigentümer stimmt nicht
G
Gruppenzugehörigkeit stimmt nicht
T
Die Zeitmarke der mtime stimmt nicht

Abfrage der PGP/GPG Signatur eines Paketes
Abschließend bietet rpm noch die Möglichkeit, daß ein Paket von seinem Autor mit einer PGP oder GPG Signatur (einer Art elektronischer Unterschrift) versehen wird. Diese Signatur kann mit folgendem Befehl überprüft werden:

rpm –checksig Paketdatei

Damit diese Überprüfung funktioniert muß eine korrekte Installation von PGP oder GPG vorliegen und die Konfiguration von rpm muß dies berücksichtigen. Die Darstellung dieser Technik würde den Rahmen dieser Dokumentation sprengen.

1.102.5 Debian Paketmanagement

Zurück zu 1.102 Installation und Paketmanagement
Prüfungskandidaten sollten in der Lage sein, mit dem Debian Paketmanagement umzugehen. Dieses Lernziel beinhaltet das Benutzen von Kommandozeilen- und interaktiver Werkzeuge zum Installieren, Updaten oder Deinstallieren von Paketen sowie das Auffinden von Paketen, die spezifische Dateien oder Software enthalten (installierte bzw. nicht installierte Pakete). Ebenfalls enthalten ist das Abfragen von Informationen wie Version, Inhalt, Abhängigkeiten, Paketintegrität und Installationsstatus (ob installiert oder nicht) von Paketen.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

* unpack
* configure
* /etc/dpkg/dpkg.cfg
* /var/lib/dpkg/*
* /etc/apt/apt.conf
* /etc/apt/sources.list
* dpkg
* dselect
* dpkg-reconfigure
* apt-get
* alien

Es gibt im Linux Bereich zwei große Modelle einer Paketverwaltung für zu installierende Programmpakete. Nachdem sich das alte tgz-Format für die Verwendung bei binären (vorcompilierten) Paketen als unzulänglich erwiesen hatte, weil es keinerlei Mechanismen zur Deinstallation aufwies, begannen zwei verschiedene Distributionen, eigene Paketverwaltungen aufzubauen. Debian und RedHat.

Inzwischen haben nahezu alle Distributionen das RedHat-Paketmanagement übernommen, nur Debian beharrt auf sein eigenes Modell. Und das nicht zu Unrecht, ist es doch gerade die Paketverwaltung von Debian, die schlichtweg als genial bezeichnet werden muß.

Als distributionsübergreifende Zertifizierung fordert LPI das Wissen um beide Formate. Beide Formate werden auch tatsächlich abgefragt und das nicht zu knapp. In diesem Kapitel wird die Debian-Verwaltung besprochen, im nächsten kommt dann die RedHat-Technik zur Sprache.

Das grundlegende Prinzip der Debian Paketverwaltung
Debian Pakete enden mit der Endung .deb. Sie haben ein einheitliches Namensschema, das sich folgendermaßen zusammensetzt:

Programmname_Versionsnummer_Architektur.deb

Wobei Programmname der Name des Programmes (oder des Paketes) ist, unter dem es später dann auch angesprochen werden kann, Versionsnummer ist die Version des Programms (oder Paketes) und Architektur bezeichnet die Hardwarearchitektur, für die dieses Paket gedacht ist, also etwa i386 für die PC-Architektur.

Ein Debian Paket besteht aus einem ar-Archiv, das wiederum zwei komprimierte tar-Archive und eine Versionsdatei beinhaltet. Das erste tar-Archiv (data.tar.gz) enthält die zu installierenden Dateien, das zweite (control.tar.gz) enthält die Metainformationen über das Paket, die Scripts, die zum Installieren und Deinstallieren benötigt werden sowie eine Prüfsumme.

Jedes Debian-Paket enthält vier Scripte, je eines das vor und nach der Installation bzw. vor und nach der Deinstallation abgearbeitet wird.

Wird ein Debian-Paket installiert, so werden die Informationen über dieses installierte Paket in mehrere Dateien im Verzeichnis /var/lib/dpkg abgelegt, so daß jederzeit eine Überprüfung der bereits installierten Pakete und Dateien stattfinden kann. Die Informationen werden folgendermaßen aufgeteilt:

* In der Datei /var/lib/dpkg/available werden die Paketinformationen aller zur Verfügung stehender (installierbarer) Pakete abgelegt.
* In der Datei /var/lib/dpkg/status werden die Informationen über den Status der Installation abgelegt, so daß unterschieden werden kann zwischen korrekt oder nur teilweise installierten Paketen.
* Im Verzeichnis /var/lib/dpkg/info liegen zu jedem installierten Paket die vier Scripte (*.preinst, *.postinst, *.prerm, *.postrm), eine Liste aller enthaltener Dateien (*.list), die md5-Prüfsummendatei (*.md5sums) und evt. noch andere Informationen wie die zur Verfügung gestellten Libraries (*.shlibs).

Mit Hilfe dieser Informationen sind sowohl Installation, als auch Deinstallation von Paketen sehr sicher und umfassend möglich. Man kann das Verzeichnis /var/lib/dpkg also als Systemdatenbank der installierten Pakete betrachten. In der Regel sind keine manuellen Zugriffe auf dieses Verzeichnis notwendig, alle Zugriffe werden mit den Hilfsprogrammen erledigt, die im Folgenden näher besprochen werden.

Das dpkg-Programm
Das Programm dpkg ist sozusagen das Low-Level Paketverwaltungsprogramm. Mit ihm ist es möglich, direkt bestimmte Pakete zu installieren oder zu deinstallieren. Noch eine Stufe weiter unten liegt das Programm dpkg-deb, das die reine Archivverwaltung (Packen/Entpacken) erledigt, aber niemals manuell aufgerufen wird.

Das dpkg Programm muß nur dann manuell aufgerufen werden, wenn direkt vorliegende .deb-Pakete installiert werden sollen. Später werden wir das Programm apt-get kennenlernen, das sich auch um den Bezug der Pakete kümmert, dann aber selbstständig dpkg aufruft, um Pakete zu installieren bzw. zu deinstallieren. Ist jedoch ein Paket manuell z.B. aus dem Internet besorgt worden, dann benötigen wir dpkg.

Pakete installieren mit dpkg
Um ein Paket mit dpkg zu installieren wird folgender Befehl ausgeführt:

dpkg [Optionen] -i | –install Paketdatei.deb

(-i | –install bedeutet entweder -i oder –install). Wenn als Option -R oder –recursive angegeben wurde, so steht statt eines Paketnamens ein Verzeichnisname. Alle Debianpakete des genannten Verzeichnisses werden dann installiert.

Die Installation besteht aus folgenden Einzelschritten:

1. Die Kontrolldateien des neuen Paketes werden entpackt.
2. Wenn eine ältere Version des selben Paketes bereits installiert war, wird das PreRemove-Script der älteren Version ausgeführt.
3. Das PreInst-Script des neuen Paketes wird ausgeführt.
4. Die Dateien des neuen Paketes werden entpackt und gleichzeitig werden die Dateien einer eventuell existierenden älteren Version gesichert, so daß im Falle eines Fehlers die Installation des neuen Paketes rückgängig gemacht werden kann.
5. Wenn eine ältere Version existierte, dann wird das PostRemove-Script der älteren Version ausgeführt.
6. Das neue Paket wird durch das Abarbeiten des PostInstall-Scripts konfiguriert.

Pakete deinstallieren mit dpkg
Wenn ein installiertes Paket entfernt werden soll. dann werden zwei Möglichkeiten angeboten. Entweder werden zwar alle Dateien entfernt, aber die Konfigurationsdateien des Paketes bleiben installiert, oder es werden wirklich alle Dateien, auch die Konfigurationsdateien entfernt.

Zum normalen Deinstallieren (ohne Entfernung der Konfigurationsdateien) wird folgender Befehl benutzt:

dpkg [Optionen] -r | –remove Paketname

Um wirklich alles zu entfernen benutzt man

dpkg [Optionen] -P | –purge Paketname

Paketname ist hier der Name des Paketes, nicht der Name der Paketdatei. Wurde die Datei foo_1.0.23_i386.deb installiert, so ist der Paketname einfach nur foo.

Das Entfernen der Pakete geht in folgenden Schritten vor sich:

1. Das PreRemove-Script des Paketes wird abgearbeitet.
2. Die zu entfernenden Dateien werden gelöscht.
3. Das PostRemove-Script wird abgearbeitet.

Informationen über installierte Pakete abfragen
Um Informationen über ein bestimmtes installiertes Paket zu erhalten, wird der Befehl

dpkg -p|–print-avail Paketname

ausgeführt. dpkg liesst daraufhin die Informationen aus der Datei /var/lib/dpkg/available und gibt sie aus.

Auflisten der installierten Pakete
Um eine Liste aller oder bestimmter installierter Pakete zu bekommen, wird der Befehl

dpkg -l | –list [Paketnamensmuster]

ausgeführt. Wird kein Namensmuster angegeben, so werden alle installierten Paketnamen ausgegeben, ansonsten nur die Pakete, deren Namen auf das angegebene Muster passen. Als Muster werden die üblichen Shell-Wildcards benutzt. Zu beachten ist, daß die Muster in Anführungszeichen gesetzt werden sollten, um die Shell daran zu hindern, sie zu interpretieren.

Auflisten der Dateien installierter Pakete
Um alle Dateien eines bestimmten Paketes aufzulisten, existiert der Befehl

dpkg -L | –listfiles Paketname

Die Dateien, die von Installationsscripts angelegt wurden, werden hier nicht angezeigt.

Abfrage des Installationsstatus
Debian-Pakete, die installiert werden, bekommen einen bestimmten Status, der angibt, wie weit die Installation fortgeschritten ist. Wenn eine Installation aus welchen Gründen auch immer, nicht vollständig abgeschlossen wurde, so kann das später aus dem Status entnommen werden. Folgende Stati sind gültig:

installed
Das Paket ist vollständig installiert
half-installed
Die Installation wurde nicht vollständig ausgeführt
not-installed
Das Paket ist nicht installiert
unpacked
Das Paket ist zwar ausgepackt, aber nicht konfiguriert
half-configured
Das Paket ist ausgepackt und die Konfiguration wurde begonnen, aber nicht korrekt abgeschlossen
config-files
Nur die Konfigurationsdateien des Paketes existieren auf dem System (typischerweise nach einer Deinstallation mit -R)

Um den Status eines Paketes abzufragen wird der Befehl

dpkg -s | –status Paketname

ausgeführt. Die Informationen werden der Datei /var/lib/dpkg/status entnommen.

Aus welchem Paket stammt eine bestimmte Datei?
Mit dem Befehl

dpkg -S | –search Dateinamesmuster

werden die installierten Dateien aus var/lib/dpkg/info durchsucht und alle Paketnamen zurückgegeben, die entsprechende Dateien enthalten. Zur Musterbildung stehen alle Shell-Wildcards zur Verfügung.

Optionen für dpkg
Vor jedem der besprochenen Befehle können verschiedene Optionen gesetzt werden, die den Ablauf des Befehls modifizieren können. Diese Optionen beziehen sich z.B. auf den Umgang mit Abhängigkeiten, oder ab wievielen Fehlern sich dpkg weigert, weiterzuarbeiten. Diese Optionen können entweder direkt an der Kommandozeile eingegeben werden, oder in die Datei /etc/dpkg/dpkg.cfg eingetragen werden. In letzterem Fall, werden die Optionen für jeden dpkg Befehl angewandt. Wichtige Optionen sind:

–abort-after=Zahl
Gibt an, nach wievielen Fehlern dpkg beendet werden muß. Voreingestellt ist 50.
-B|–auto-deconfigure
Wenn ein Paket deinstalliert wird, so ist es möglich, daß ein anderes installiertes Paket dieses Paket gebraucht hätte. Mit dieser Option werden automatisch alle anderen Pakete auch deinstalliert, die das zu installierende Paket benötigt hätten.
–ignore-depends=Paket
Abhängigkeiten für das angegebene Paket werden ignoriert. Es werden solche Abhängigkeiten zwar überprüft, aber es werden nur Warnungen statt Fehlermeldungen angezeigt, wenn nicht erfüllte Abhängigkeiten auftreten.
–refuse-downgrade | -G
Ein Paket, von dem eine neuere Version bereits installiert ist, wird nicht installiert

Eine vollständige Liste aller denkbaren Optionen sind der Handbuchseite zu entnehmen.

dpkg-reconfigure
Wenn ein bereits installiertes Paket erneut konfiguriert werden soll, so kann das durch den Aufruf von

dpkg-reconfigure Paketname

vorgenommen werden. Das hat aber nur dann eine tatsächliche Bedeutung, wenn ein Paket ein debconf-Script enthält.

dselect
Das Programm dselect ist ein menügeführtes Frontend für dpkg. Es übernimmt aber nicht nur die Aufgabe, Pakete zu installieren oder zu deinstallieren, sondern auch die Verwaltung der zur Verügung stehenen Pakete und der gegenseitigen Abhängigkeiten.

dselect bietet verschiedene Methoden an, um die zur Verfügung stehenden Pakete zu managen. Dabei geht es hauptsächlich darum, woher die Debian-Pakete bezogen werden sollen. Folgende Methoden werden angeboten:

cdrom
Installiert von einer Debian-CDROM. Die CDROM kann, muß aber nicht gemountet sein und sollte ein ISO9660 Dateisystem beinhalten.
nfs
Installiert über einen (noch nicht gemounteten) NFS-Server. Der Server muß die Paketbeschreibungsdateien (Packages.gz) jeder Distributionsabteilung (stable, contrib und non-free) zur Verfügung stellen und natürlich die entsprechenden .deb Dateien.
harddisk
Installiert von einer noch nicht gemounteten Festplattenpartition. Diese Partition muß die selben Elemente wie ein NFS-Server enthalten.
mounted
Installation von einem bereits gemounteten Dateisystem. Dabei kann es sich entweder um eine gemountete Festplattenpartition oder um eine gemounteten NFS-Freigabe handeln. Zum Inhalt gilt das selbe wie bei NFS-Server und Festplatte.
floppy
Installation über einen Stapel Disketten, von dem die erste Disk die Paketinformationen enthalten sollte. Veraltert.
apt
Benutzt die neue Methode, die weiter unten bei apt-get beschrieben wird. Hier kann die Installationsquelle entweder über ein Netz (ftp/https) oder über das Dateisystem (file) angesprochen werden.

Das dselect Programm wird normalerweise ohne weitere Parameter aufgerufen. Es bietet menügeführt folgende Möglichkeiten:

Zugriff (access)
Auswahl der Zugriffsmethode (siehe oben).
Erneuern (update)
Erneuert die Liste der verfügbaren Pakete, wenn möglich.
Auswählen (select)
Menügeführte Auswahl aller zu installierender oder zu entfernender Pakete.
Install
Installiert die Pakete, die angewählt wurden.
Konfig
Konfiguriert Pakete, die bei der letzten Installation nicht vollständig konfiguriert wurden.
Löschen (remove)
Entfernt die zum Löschen markierten Pakete.

Als menügeführtes Programm ist die Bedienung von dselect zwar manchmal gewöhnungsbedürftig, jedoch nicht weiter schwierig.

apt-get
apt-get ist das Kommandozeilenprogramm, das die modernste der Zugriffsmethoden auf Debian-Pakete steuert. Damit ist es möglich, die Installation und verschiedene andere Aufgaben der Paketverwaltung über ein einfaches Kommando auszuführen. Das Programm speichert seine Konfiguration in der Datei /etc/apt/apt.conf oder bei den moderneren Versionen in mehreren Verzeichnissen unter /etc/apt/apt.conf.d.

Die Quellen, von denen apt-get seine Debian-Pakete bezieht, werden in der Datei /etc/apt/sources.list angegeben. Diese Datei kann entweder von Hand erstellt/manipuliert werden oder über das Programm dselect oder apt-setup im Menüpunkt Zugriff.

apt-get wird immer in einer der folgenden Formen aufgerufen:

apt-get upgrade
Holt die neuesten Paketbeschreibungen der in /etc/apt/sources.list angegebenen Installationsquellen.
apt-get install Paketname
Installiert das angegebene Paket von den eingestellten Installationsquellen. Das Paket und alle weiteren notwendigen Pakete die von ihm erfordert werden, wird vollständig installiert (mit dpkg -i).
apt-get remove Paketname
Das angegebene Paket wird deinstalliert.
apt-get source Paketname
Das Quellcode-Paket des angegebenen Paketes wird installiert.

Seine wahre Stärke spielt apt-get aus, wenn als Quellen offizielle Debian-Server im Internet angegeben wurden und der Paketname des zu installierenden Paketes bekannt ist. Wird z.B. festgestellt, daß auf einem System das Programm foo nicht installiert ist, so kann durch die Angabe des Befehls

apt-get install foo

die Installation des Programms ausgeführt werden, ohne lange ein menügeführtes Programm aufzurufen. Es existieren inzwischen auch mehrere Frontends für apt-get. Für Textterminals gibt es aptitude und für graphische Terminals kann gnome-apt verwendet werden.

alien
Debian ist die Distribution, die die meisten Pakete von allen bekannten Distributionen anbietet. Falls trotzdem einmal ein Paket nicht im .deb Format vorliegen sollte, man also gezwungen ist, auf ein .rpm-Paket zurückzugreifen, gibt es speziell dafür das Programm alien.

alien konvertiert verschiedene Paketformate in jeweils andere um. Das Programm kann mit folgenden Formaten umgehen:

* RedHat (rpm)
* Debian (deb)
* Stampede (slp)
* Slackware (tgz)
* Solaris (pkg)

Die Aufrufform ist sehr einfach. alien erkennt das Format einer angegebenen Paketdatei automatisch und konvertiert es dann in das angegebene Format. Das gewünschte Ausgabeformat wird durch die folgenden Parameter angegeben:

–to-deb
Aus dem angegebenen Paket wird ein Debian-Paket erstellt
–to-rpm
Aus dem angegebenen Paket wird ein RedHat-Paket erstellt
–to-tgz
Aus dem angegebenen Paket wird ein Slackware-Paket erstellt
–to-slp
Aus dem angegebenen Paket wird ein Stampede-Paket erstellt

Wenn also das Paket foo-1.2.34.i386.rpm existiert, und daraus ein Debian-Paket erstellt werden soll, so genügt der Befehl

alien –to-deb foo-1.2.34.i386.rpm

und alien erzeugt daraus das Paket foo_1.2.34_i386.deb

Jetzt kann dieses neu erstellte Paket mit dpkg -i installiert werden und wird so nahtlos in die Debian-Paketverwaltung integriert.

Notizen zu Open Source, Linux, Informatik, Physiologie, Umfragen, Tai Chi, Rezepte, Blumen und für mich Interessantes eben