dpkg ist ein grundlegendes Werkzeug zur Paketverwaltung, das direkt mit .deb-Paketen arbeitet. Es kümmert sich lediglich um das Installieren, Entfernen und Konfigurieren eines einzelnen, angegebenen Pakets. Die Auflösung und automatische Installation von Abhängigkeiten gehört jedoch nicht zu den Funktionen von dpkg.
Wenn bei der Installation fehlende Abhängigkeiten festgestellt werden, bekommt man lediglich Fehlermeldungen, welche die fehlenden Pakete anzeigen. Möchte man diese Abhängigkeiten auflösen, muß man alle erforderlichen Pakete von Hand nachinstallieren. Damit eignet es sich nicht dazu, Pakete mit vielen Abhängigkeiten zu installieren und ist mehr für Erfahrene Linux-Administratoren gedacht, welche Zugriff auf ein einzelnes Paket benötigen. Um Abhängigkeiten automatisch aufzulösen und zu installieren, verwendet man apt oder apt-get, die auf dpkg aufbauen, aber zusätzlich ein Abhängigkeitsmanagement bieten.
Aufbau eines deb-Pakets:
Beispiel: xtartan_2.3-9_i386.deb
Name:
Version:
Auflage:
Architektur:
Endung:
|
xtartan
2.3
9. Auflage
i386 (für alle Architekturen: all)
deb
|
Ein Debian-Paket enthält drei Bestandteile:
debian-binary
control.tar.gz
data.tar.gz |
enthält die Versionsnummer des Pakets
enthält Skripte und Steuerdateien
enthält die eigentlichen Paketdaten
|
Installation:
# dpkg -i xtartan_2.3-9_i386.deb
installiert (Option -i) das Paket xtartan. Wird ein Paket installiert,
das bereits in einer älteren Version installiert ist, deinstalliert
dpkg vorher die ältere Version und installiert dann die neue
Version.
Deinstallation:
# dpkg -r xtartan
deinstalliert das Paket xtartan (-r "Remove"),
behält jedoch die Konfigurationsdateien, wodurch eine spätere
Wiederinstallation schneller ausgeführt werden kann.
# dpkg -P xtartan
-P (Purge) entfernt das Paket mitsamt der Konfigurationsdateien.
Mögliche Abhängigkeitskonflikte kann man mit --force
außer Kraft setzen.
Paket-Abfragen:
# dpkg -l (kleines L)
liefert eine Liste aller installierten Pakete, inklusive dem Status.
Über ein Suchmuster kann die Liste eingeschränkt werden:
# dpkg -l lib*-tcl
....
pn libdb3-tcl <none> (no description avaiable)
un libdb4.0-tcl <none> (no description avaiable)
....
Zustände
der Pakete:
un = nicht installiert
pn = Paket ist entfernt worden
ii = Paket ist installiert
# dpkg -s xtartan
zeigt den Status (-s=Status) eines Paketes an.
# dpkg -S /bin/m*fs
gibt aus welches Paket zu den Dateien im Suchmuster
(-S=Search) gehört.
Neukonfiguration von
Paketen:
# dpkg-reconfigure xtartan
Pakete werden während einer Installation konfiguriert, d.h.
es können während der Installation Abfragen für Einstellungen
auftauchen. Möchte man nach der Installation die Konfiguration
erneut anstoßen, geht das über den Befehl
dpkg-reconfigure Paketname.
dpkg eignet sich auch um einzelne Pakete zu entfernen und dabei
die Abhängigkeiten zu umgehen.
z.B. entfernt
# dpkg -r --force-depends noatun
das Paket noatun ohne auf die Abhängigkeiten zu achten.
Möchte man das ganze nur simulieren, was dpkg tun würde,
hilft die Option --no-act:
# dpkg -r --force-depends --no-act noatun
rpm
rpm ist das Redhat/Suse Pendant zu dpkg, also auch ein grundlegendes Werkzeug, welches nur auf einzelne Pakete angewendet wird. Möchte man ein Tool mit Abhängigkeitsmanagement gibt es in der rpm Welt dafür yum oder das moderne Tool dnf.
Aufbau der Pakete für rpm:
Beispielpaket: openssh-3.5p1-107.i586.rpm
Setzt sich wie folgt zusammen: <Name des Pakets><Architektur><Endung>
Paketname: openssh-3.5p1-107
setzt sich zusammen
aus:
Name der Software: openssh
Version: 3.5p1
Release: 107
Architektur: i586
(Pakete für alle Architekturen haben noarch)
Endung: rpm
Installation:
# rpm -i /tmp/openssh-3.5p1-107.i586.rpm
installiert (Option -i) das Paket openssh. Besser ist aber:
# rpm -ivh /tmp/openssh-3.5p1-107.i586.rpm
-v gibt ausführlichere Informationen und -h zeigt
einen Statusbalken für den Fortschritt der Installation an.
Deinstallation:
# rpm -e openssh-3.5p1-107
deinstalliert das Paket openssh.
Zu Beachten: hier muß der interne Paketname angegeben werden
und nicht der Pfad zum Paket! So fern der Paketname eindeutig ist,
kann man ihn auch gekürzt angeben, z.B.
# rpm -e openssh
Paket-Anfragen:
Anfrage-Modus: -q
# rpm -q openssh
# openssh-3.5p1-107
ohne weitere Optionen erwartet rpm die Angabe eines internen Paketnamens,
der auch gekürzt sein kann und zeigt den vollen Paketnamen.
# rpm -qf /usr/bin/ssh
# openssh-3.5p1-107
Option -f zeigt das Paket zu dem das Programm unter /usr/bin/ssh
gehört.
# rpm -qa
zeigt eine Liste aller installierten Pakete an.
# rpm -qi openssh
gibt ausführliche Informationen (-i) über das Paket.
Überprüfung der Pakete:
# rpm --checksig /tmp/openssh-3.5p1-107.i586.rpm
# /tmp/openssh-3.5p1-107.i586.rpm: md5 gpg OK
Überprüft das Paket anhand der md5-Checksumme auf Veränderungen,
z.B. Trojaner und andere Viren.
|