Home · Kontakt · Impressum
contents index previous up next
Next: 14.3.2 Deinstallation Up: 14.3 Softwareverwaltung mit RPM-Paketen Previous: 14.3 Softwareverwaltung mit RPM-Paketen

Unterabschnitte


14.3.1 Installation und Upgrade

Der Package-Manager unterscheidet zwischen der Installation eines neuen Pakets und dem Einspielen einer neuen Version des Pakets (Upgrade).

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.

14.3.1.1 Debugginginformationen: -vv

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.
...

14.3.1.2 Testlauf: -test

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

14.3.1.3 Erneute Installation: -replacepkgs

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:~ #

14.3.1.4 Überschreiben von Dateien: -replacefiles

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.

14.3.1.5 Downgrade: -oldpackage

Manchmal hat man das Bedürfnis auf eine ältere Version eines Pakets zurückzugehen. Dies wird erfolgreich durch den RPM-Manager abgeblockt. Sollten Sie dennoch ein Upgrade bzw. Downgrade auf eine ältere Version machen wollen, sollten Sie den Schalter --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.

14.3.1.6 Keine Abhängigkeiten: -nodeps

Ein Vorteil von RPM ist die Überprüfung von Abhängigkeiten vor der Installation. So kann verhindert werden, daß ein Paket installiert wird ohne das die notwendigen anderen Pakete auf dem System vorhanden sind. Das ist auch in 99 Prozent der Fälle gut so. Es kann aber auch vorkommen, daß ein Paket trotzdem installiert werden soll. Dann müssen Sie mit der Option --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:~ #

14.3.1.7 Documentationsdateien: -includedocs und -excludedocs

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

14.3.1.8 Verlegen von Dateien: -prefix PFAD

Bei einigen Paketen können Sie den Standort der Dateien selbst festlegen. Diese Dateien werden auch als ``Relocatable Packages'' bezeichnet. In diesen Paketen existiert ein Grundpfad für die Installation. Diesen können Sie mit der Option --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

14.3.1.9 Skriptausführung unterdrücken: -noscripts

Die RPM-Pakete können Skripte enthalten, die vor und/oder nach der Installation ausgeführt werden können. Dies ist notwendig, wenn das RPM-Paket vor oder nach der Installation die Ausführung bestimmter Programme benötigt. Der Einsatz der Option --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

14.3.1.10 Fortschritt: -hash und -percent

Manchmal dauert die Installation eines Pakets recht lange. In diesem Fall ist es von Vorteil, wenn man den Fortschritt der Installation irgendwie sehen kann. Dazu kann ein Fortschrittsbalken dienen. Mit der Option --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

14.3.1.11 Alternative Verzeichniswurzel: -root PFAD

Normalerweise ist die Verzeichniswurzel des Systems auch die Verzeichniswurzel von RPM. Es kann aber Situationen geben, z. B. beim Einsatz eines Rettungssystems, daß die Pakete in einen alternativen Verzeichnisbaum mit einer alternativen Verzeichniswurzel installiert werden müssen. Für diesen seltenen Fall können Sie mit der Option --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

14.3.1.12 FTP-Einstellungen: -ftpport PORT -ftpproxy HOST

Für den Zugriff über das Protokoll ftp auf ein RPM-Paket können Sie auch Einstellungen vornehmen. Sie können den Port für den Zugriff wählen (Option --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

14.3.1.13 Hardware und Betriebssystem: -ignorearch und -ignoreos

In den RPM-Paketen wird festgehalten für welches Hardwareplattform (Architektur) und für welches Betriebssystem das Paket gedacht ist. Mit den jeweiligen Optionen für die Architektur (-ignorearch) und das Betriebssystem (-ignoreos) kann diese Überprüfung abgeschaltet werden. Von der Verwendung der Funktionen wird abgeraten, es sei denn, Sie wissen genau was Sie tun.


contents index previous up next
Next: 14.3.2 Deinstallation Up: 14.3 Softwareverwaltung mit RPM-Paketen Previous: 14.3 Softwareverwaltung mit RPM-Paketen
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang