Um ein neues Paket einzuspielen verwenden Sie folgende Befehlskombinationen.
rpm -i [OPTIONEN] PAKETLISTE rpm --install [OPTIONEN] PAKETLISTE
Wenn das Paket auf anderen Paketen basiert, die nicht installiert sind, gibt rpm eine passende Fehlermeldung aus. Sie müssen dann die fehlende Pakete zuerst installieren. Hilfreich sind die Schalter -v und -h. Der Erste läßt rpm gesprächiger werden, während der Zweite einen schönen Fortschrittsbalken generiert.
root@defiant:~ # rpm -ivh jdk-1.3.1-fcs.i386.rpm jdk ##################################################
Wollen Sie eine neuere Version eines bereits installierten Pakets installieren, dann geben Sie einen der folgenden Befehle ein.
rpm -F [OPTIONEN] PAKETLISTE rpm --freshen [OPTIONEN] PAKETLISTE
Dabei ist darauf zu achten, daß auch eine alte Version des Pakets installiert ist. Ist dies nicht der Fall, dann kommt es zu einer Fehlermeldung.
Wenn Sie nicht so genau wissen, ob es schon eine alte Version gibt oder Sie gar eine ganze Liste von Paketen installieren wollen, dann können Sie noch eine andere Variante wählen.
rpm -U [OPTIONEN] PAKETLISTE rpm --upgrade [OPTIONEN] PAKETLISTE
Der Upgrade-Modus ermöglicht es Pakete zu installieren, egal ob es eine alte Version gibt oder nicht. Existiert eine ältere Paketversion, dann wird diese aktualisiert. Existiert keine frühere Paketversion, dann wird eine ganz normale Installation vorgenommen.
root@defiant:~ # rpm -U jdk-1.3.1-fcs.i386.rpm
Die Installation bzw. Upgrade eines Pakets erfolgt in mehreren Schritten:
Sie können nicht nur Pakete installieren, die sich auf der lokalen Platte befinden, sondern Sie können die Pakete auch aus dem Internet über die Protokolle http und ftp beziehen. In diesem Fall brauchen Sie nur die passende URL eingeben.
defiant:~ # rpm -ivh ftp://rpm.amov.de/xscorch-0.1.15-334.i586.rpm Hole ftp://rpm.amov.de/xscorch-0.1.15-334.i586.rpm heraus Preparing... ########################################### [100%] 1:xscorch ########################################### [100%]
Bei der Installation kann es vorkommen, daß es Versionen der Konfigurationsdateien aus dem Paket schon auf dem System gibt. In diesem Fall darf rpm diese Konfigurationsdateien nicht einfach löschen, da dort wichtige Informationen enhalten sein können. Stehenlassen darf der Package Manager die Dateien aber auch nicht, da die neue Version eventuell mit der veralteten Konfigurationsdatei nichts anfangen kann. Der RPM Packager Manager löst diese Situation ganz einfach. Die alte Datei wird umbenannt. Dabei wird hinter dem Namen der Datei einfach die Endung .rpmorig angehängt. Dann wird die neue Konfigurationsdatei installiert, die auf das neue Paket eingestellt ist.
Natürlich gibt es für die Installation und das Upgrade von Paketen noch spezielle Optionen, die das Verhalten bei diesen Vorgängen steuern. Hier eine Auswahl der wichtigsten Optionen.
Optionen | |
--excludepath PFAD |
Installiert keine Dateien, die mit PFAD beginnen. |
--excludedocs |
Installiert keine als Dokumentation gekennzeichneten Dateien (Manual-Pages, Texinfo) |
--force |
Kombination aus --oldpackage , --replacefiles und --replacepkgs . |
-h | --hash |
Zeigt einen Fortschrittsbalken von 50 Schweinegattern (# ) während der Installaton an. |
--ignoresize |
Überprüft das Dateisystem vor der Installation nicht auf freien Speicherplatz. |
--ignorearch |
Erlaubt Installation und Upgrade auch dann, wenn die Hardwarearchitektur von Rechner und Binärpaket nicht zusammenpassen. |
--ignoreos |
Erlaubt Installation und Upgrade auch dann, wenn das Betriebssystem von Rechner und Binärpaket nicht zusammenpassen. |
--includedocs |
Installiert die Dokumentation. Dies ist der Standard. |
--justdb |
Aktualisiert nur die Datenbank und nicht das Dateisystem. |
--nodeps |
Führt keine Abhängigkeitsprüfung vor der Installation durch. |
--nosuggest |
Es werden keine Pakete vorgeschlagen, die fehlende Abhängigkeiten enthalten. |
--noorder |
Die Pakete werden in der angegebenen Reihenfolge installiert. Normalerweise werden Sie so sortiert, daß die Abhängigkeiten erfüllt sind. |
--noscripts |
Die vor und nach der Installation auszuführenden Skripte werden nicht ausgeführt. |
--oldpackage |
Erlaubt es der Upgradefunktion eine neueres Paket durch ein älteres zu ersetzen. |
--percent |
Zeigt den Fortschritt der Installation in Prozent an. |
--prefix PFAD |
Verschiebt |
--replacefiles |
Installiert das Paket, selbst wenn Dateien anderer installierter Pakete damit überschrieben werden. |
--replacepkgs |
Installiert die Pakete, selbst wenn einige von ihnen bereits auf dem System installiert sind. |
--test |
Testet nur und installiert nicht |
-v |
Ausführliche Informationen über die Aktion |
-vv |
Debugginginformationen |
Schauen wir uns doch mal ein paar Optionen genauer an.
Sehr ausführliche Informationen über die Installation erhalten Sie über den verdoppelten Sabbelschalter -vv. Diese Informationen sind sehr sehr ausführlich. Die Verwendung des Pager less ist angeraten.
defiant:~ # rpm -ivv xscorch-0.1.15-334.i586.rpm D: ============== xscorch-0.1.15-334.i586.rpm D: Expected size: 272832 = lead(96)+sigs(264)+pad(0)+data(272472) D: Actual size: 272832 D: unshared posix mutexes found(38), adding DB_PRIVATE, using fcntl lock D: opening db environment /var/lib/rpm/Packages create:cdb:mpool:private D: opening db index /var/lib/rpm/Packages rdonly mode=0x0 D: locked db index /var/lib/rpm/Packages D: opening db index /var/lib/rpm/Pubkeys rdonly:nofsync mode=0x0 D: read h# 2 Header sanity check: OK D: ========== DSA pubkey id a84edae89c800aca D: xscorch-0.1.15-334.i586.rpm: V3 DSA signature: OK, key ID 9c800aca D: added binary package [0] D: found 0 source and 1 binary packages D: ========== +++ xscorch-0.1.15-334 i586/linux 0x0 D: opening db index /var/lib/rpm/Depends create:nofsync mode=0x0 D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 YES (rpmlib provides) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 YES (rpmlib provides) D: opening db index /var/lib/rpm/Providename rdonly:nofsync mode=0x0 D: read h# 29 Header SHA1 digest: OK (08f8fe1d5fed1b5cebffab60d2a767e333d73c42) D: Requires: ld-linux.so.2 YES (db provides) ... D: closed db index /var/lib/rpm/Depends D: ========== recording tsort relations D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth) D: 0 0 0 0 0 +xscorch-0.1.15-334 D: installing binary packages ... D: mounted filesystems: D: i dev bsize bavail iavail mount point D: 0 0x0305 4096 498950 492677 / D: 1 0x0002 1024 0 -1 /proc D: 2 0x0008 1024 0 -1 /dev/pts D: 3 0x0306 4096 605280 389680 /home D: 4 0x0009 4096 31957 31956 /dev/shm D: sanity checking 1 elements D: opening db index /var/lib/rpm/Name create:nofsync mode=0x42 D: computing 26 file fingerprints D: opening db index /var/lib/rpm/Basenames create:nofsync mode=0x42 ... Preparing packages for installation... D: computing file dispositions D: ========== +++ xscorch-0.1.15-334 D: Expected size: 272832 = lead(96)+sigs(264)+pad(0)+data(272472) D: Actual size: 272832 D: install: xscorch-0.1.15-334 has 26 files, test = 0 xscorch-0.1.15-334 D: ========== Directories not explictly included in package: D: 0 /usr/bin/ D: 1 /usr/share/applications/ D: 2 /usr/share/doc/packages/ ... D: ========== D: fini 100755 1 ( 0, 0) 394473 /usr/bin/xscorch;40e92459 D: fini 100755 1 ( 0, 0) 205308 /usr/bin/xscorch-server;40e92459 D: fini 100644 1 ( 0, 0) 2915 /usr/share/applications/xscorch.desktop;40e92459 ... BZDIO: 101 reads, 826824 total bytes in 0.343 secs D: +++ h# 673 Header SHA1 digest: OK (0330cbaf3b2ae7c8c35ae37468b9045bde8cad84) D: adding "xscorch" to Name index. D: adding 26 entries to Basenames index. D: adding "Amusements/Games/Action/Other" to Group index. ...
Sie können die Installation auch erst einmal testen. Die Option --test
führt zwar alle Tests durch, die normalerweise bei einer Installation erfolgen, die eigentliche Installation wird aber nicht ausgeführt. Die Fehlermeldungen sind identisch mit denen der normalen Installation.
defiant:~ # rpm -i --test gimp-2.0.1-5.i386.rpm Warnung: gimp-2.0.1-5.i386.rpm: V3 DSA signature: NOKEY, key ID 30c9ecf8 Fehler: Failed dependencies: gimp-print >= 4.2.0 is needed by gimp-2.0.1-5 glib2 >= 2.3.0 is needed by gimp-2.0.1-5 gtk2 >= 2.3.0 is needed by gimp-2.0.1-5 libc.so.6(GLIBC_2.3.4) is needed by gimp-2.0.1-5 libcrlayeng.so.1 is needed by gimp-2.0.1-5 libcroco.so.1 is needed by gimp-2.0.1-5 libcrseleng.so.2 is needed by gimp-2.0.1-5 libpopt.so.0 is needed by gimp-2.0.1-5 pango >= 1.4.0 is needed by gimp-2.0.1-5
Normalerweise wird die Installation eines Pakets verweigert, wenn es bereits installiert ist. Dies ist auch nicht weiter verwunderlich. Es kann aber der Fall eintreten, daß Dateien aus einem Paket beschädigt oder entfernt wurden. Der Manager verweigert auch in diesem Fall die Installation, da die Schäden nicht in der RPM-Datenbank verzeichnet sind. Sie können den Prüfmechanismus mit der Option --replacepkgs
außer Gefecht setzen. Nun ist es möglich ein bereits installiertes Paket noch einmal zu installieren. Im folgenden Beispiel funktioniert das Programm XScorch nicht mehr richtig. Eine Überprüfung der Installation ergibt, daß ein komplettes Verzeichnis mit Dateien zu XScorch gelöscht wurde. Um die Dateien nachzuinstallieren muß der Schalter --replacepkgs
verwendet werden, da ansonsten die Installation verweigert wird.
defiant:~ # rpm -V xscorch missing /usr/share/xscorch missing /usr/share/xscorch/accessories.def missing /usr/share/xscorch/copying.txt missing /usr/share/xscorch/images missing /usr/share/xscorch/images/xscorch-icon.xpm missing /usr/share/xscorch/images/xscorch-logo.xpm missing /usr/share/xscorch/profiles.def missing /usr/share/xscorch/weapons.def defiant:~ # rpm -i xscorch-0.1.15-334.i586.rpm package xscorch-0.1.15-334 is already installed defiant:~ # rpm -i --replacepkgs xscorch-0.1.15-334.i586.rpm defiant:~ # rpm -V xscorch defiant:~ #
Die Installation wird auch abgebrochen, wenn das RPM-Paket Dateien enthält, die schon auf dem System vorhanden sind und aus einem anderen Paket stammen. Das Überschreiben der Dateien kann mit der Option --replacefiles
erzwungen werden. Dateien, die nicht in der RPM-Datenbank erfaßt sind und damit nicht aus einem RPM-Paket stammen, werden dagegen einfach gelöscht. Was aber passiert, wenn eine Konfigurationsdatei doppelt vorhanden ist. Wird Sie durch die Option --replacefiles
einfach gelöscht. Natürlich nicht. Die Datei wird umbenannt und erhält die Endung ``.rpmsave'' oder die alte Datei bleibt bestehen und die neue Datei erhält die Endung ``.rpmnew''.
defiant:~ # rpm -i vsftpd-1.2.1-69.i586.rpm file /etc/vsftpd.conf from install of vsftpd-1.2.1-69 conflicts with file from package vsftpd-1.2.0-48 file /usr/sbin/vsftpd from install of vsftpd-1.2.1-69 conflicts with file from package vsftpd-1.2.0-48 file /usr/share/man/man5/vsftpd.conf.5.gz from install of vsftpd-1.2.1-69 conflicts with file from ... file /usr/share/man/man8/vsftpd.8.gz from install of vsftpd-1.2.1-69 conflicts with file from packa... defiant:~ # rpm -i --replacefiles vsftpd-1.2.1-69.i586.rpm Warnung: /etc/vsftpd.conf created as /etc/vsftpd.conf.rpmnew
Es gibt allerdings ein Problem mit dem Ersetzen von Dateien. Nehmen wir einfach mal an, daß beide Pakete die gleiche Datei blubb.conf benötigen. Um beide Pakete installieren zu können, wird das zweite Paket mit der Option --replacefiles
installiert und die erste Version der Datei wird als blubb.conf.rpmsave gespeichert. Noch lebt alles friedlich und einträchtig zusammen. Sollten Sie aber auf die Idee kommen das zweite Paket zu deinstallieren ist plötzlich auch die gemeinsame Datei blubb.conf mitsamt der Einstellungen weg. Nur wenn Sie das erste Paket deinstallieren, gibt es kein Problem. Bei der Installation des zweiten Pakets wurde die Datei blubb.conf für das erste Paket in der RPM-Datenbank als gelöscht vermerkt. Daher wird es auch beim Deinstallieren nicht gelöscht.
--oldpackage
verwenden. Sie können auch richtig brutal vorgehen und die Funktionen von --oldpackage
, --replacefiles
und --replacepkgs
zusammenfassen. Dafür ist die Option --force
zuständig. Diese sollten Sie aber nur sehr behutsam einsetzen. Ist besser für Sie und Ihr System.
--nodeps
die Abhängigkeitsüberprüfung abschalten.
defiant:~ # rpm -i blubb-6.2-233.i586.rpm Fehler: Failed dependencies: libblubb.so.1 is needed by blubb-6.2-233 defiant:~ # rpm -i --nodeps blubb-6.2-233.i586.rpm defiant:~ #
Normalerweise werden die Dokumentationen (Manual-Pages, TexInfo) bei der Installation mitinstalliert. Das entspricht der Option --includedocs
. Sollen Sie nicht mitinstalliert werden, dann nehmen Sie die Option --excludedocs
.
defiant:~ # rpm -i --excludedocs blubb-1.2-34.i586.rpm
--prefix
und einer Pfadangabe bei der Installation verändern.
Ein Relocatable Package können Sie durch die folgenden Befehle erkennen.
enterprise:~ # rpm -qp --queryformat "%{PREFIXES}\n" kernel-source-2.4.21-99.i586.rpm /usr/src enterprise:~ # rpm -qpi kernel-source-2.4.21-99.i586.rpm | grep Relocations Name : kernel-source Relocations: /usr/src
Ein Paket, das sich nicht verschieben läßt, würde dagegen folgende Informationen liefern.
enterprise:~ # rpm -qp --queryformat "%{PREFIXES}\n" xscorch-0.1.15-334.i586.rpm (none) enterprise:~ # rpm -qpi xscorch-0.1.15-334.i586.rpm | grep Relocations Name : xscorch Relocations: (not relocateable)
Die Installation erfolgt dann ganz einfach unter Angabe der Option --prefix
.
enterprise:~ # rpm -i --prefix /tmp/test kernel-source-2.4.21-99.i586.rpm enterprise:~ # ls -l /tmp/test/ insgesamt 16 drwxr-xr-x 4 root root 4096 2004-07-05 21:16 . drwxrwxrwt 29 root root 4096 2004-07-05 21:16 .. lrwxrwxrwx 1 root root 15 2004-07-05 21:16 linux -> linux-2.4.21-99 drwxr-xr-x 19 root root 4096 2004-07-05 21:17 linux-2.4.21-99 drwxr-xr-x 8 root root 4096 2004-07-05 21:16 linux-2.4.21-99-include
--noscripts
verhindert die Ausführung dieser Skripte. Auch diese Option ist mit Vorsicht zu genießen, da die Skripte nicht umsonst in das Paket eingefügt worden sind.
enterprise:~ # rpm -qp --scripts apache-1.3.28-43.i586.rpm | grep scriptlet postinstall scriptlet (through /bin/sh): preuninstall scriptlet (through /bin/sh): postuninstall scriptlet (through /bin/sh): enterprise:~ # rpm -i --noscripts apache-1.3.28-43.i586.rpm
--hash
bzw. -h
können Sie sich einen solchen Balken sich anzeigen lassen.
enterprise:~ # rpm -i --hash kernel-source-2.4.21-99.i586.rpm ########################################### [100%] ##################### ( 50%)
Eine weniger gebräuchliche Option ist --percent
. Sie gibt in mehreren Schritten den aktuellen Fortschritt in Prozent aus. Dies ist weniger für das menschliche Auge als für Programme wie z. B. YaST gedacht, die den RPM Package Manager als Programmbestandteil benutzen und einen Fortschrittsbalken anzeigen lassen wollen.
enterprise:~ # rpm -i --percent kernel-source-2.4.21-99.i586.rpm %% 0,000000 %% 0,000064 %% 0,000125 ... %% 99,997035 %% 99,999944 %% 100,000000
--root
eine neue Verzeichniswurzel angeben. Durch diese Angabe verschieben sich alle Verzeichnisse, sogar die RPM-Datenbanken und Konfigurationsdateien. Also passen Sie gut auf bei dieser Option.
enterprise:~ # rpm -i --root /mnt/rescue rpm-4.1.1-71.i586.rpm
--ftpport
und Sie können einen FTP-Proxy bestimmen (Option --ftpproxy
über den der Zugriff erfolgt.
enterprise:~ # rpm -i --ftpport 4242 --ftpproxy proxy.amov.de \ > ftp://rpm.amov.de/blubb-42.42.42-42.i586.rpm