rpm (Redhat Package Manager)
und dpkg (Debian Package)
 
dpkg

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.