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

Unterabschnitte


14.3.3 Informationen

Installierte und nicht installierte Pakete können im Informationsmodus (Query-Mode) mit dem Befehl rpm -q befragt werden. Im einfachsten Fall liefert der Befehl den vollen Paketnamen.

defiant:~ # rpm -q xscorch
xscorch-0.1.15-334

Auch hier gibt es eine Reihe von Schaltern, die das Verhalten des RPM Package Managers steuern.

Optionen
-p DATEI Bezieht sich auf eine RPM-Datei, anstatt auf ein installiertes Paket
-f DATEI Pakete, die die angegebene DATEI enthalten.
-a Alle Pakete
-g GRUPPE Alle Pakete, die zu einer bestimmten Gruppe gehören
--whatprovides X Alle Pakete, die eine bestimmte Ressource X enthalten
--whatrequires X Alle Pakete, die eine bestimmte Ressource X benötigen
-i Ausführliche Paketinformationen
-l Liste der Dateien im Paket
-c Liste der Konfigurationsdateien im Paket
-d Liste der Dokumentationsdateien im Paket
-s Lider der Dateien im Paket mit Status
--scripts Zeigt die im Paket enthaltenden RPM-Skripte an
--queryformat | --qf Definiert das Ausgabeformat der Daten
--dump Zeigt alle verifizierbaren Informationen über die Dateien im Paket an
--provides Zeigt die Ressourcen an, die das Paket bietet
-R | --requires Zeigt die Ressourcen an, die das Paket benötigt
 

Schauen wir uns auch hier mal die Optionen genauer an.

14.3.3.1 Auswahl der Pakete

14.3.3.1.1 Befragung einer Paketdatei: -p

Normalerweise bezieht RPM die Angabe eines Paketnamen auf die installierten Pakete. Wenn Informationen über eine RPM-Datei anstatt über ein installiertes Paket gefragt sind, kommt der Schalter -p ins Spiel.
defiant:~ # rpm -qpi jdk-1.3.1.i386.rpm
Name        : jdk                          Relocations: (not relocateable)
Version     : 1.3.1                             Vendor: Sun Microsystems
Release     : fcs                           Build Date: Son 06 Mai 2001 12:46:01 CEST
Install date: (not installed)               Build Host: lady-linux
Group       : Development/Tools             Source RPM: jdk-1.3.1-fcs.src.rpm
Size        : 59866441                         License: 1994-2001 Sun Microsystems, Inc.
Packager    : Java Software <j2se-comments@java.sun.com>
URL         : http://java.sun.com/linux
Summary     : Java(TM) 2 Software Development Kit, Standard Edition
Description :
The Java 2 SDK, Standard Edition includes the Java Virtual Machine,
core class libraries and tools used by programmers to develop Java software
applets and applications. The SDK also provides the foundation for IDE
(Integrated Development Environment) tools such as Sun's Forte for Java,
Community Edition, the Java(TM) 2 Platform, Enterprise Edition (J2EE),
Java-based application servers and more.
The Java 2 Software Development Kit, SDK, is a development
environment for building applications, applets, and components
that can be deployed on the Java platform.
The Java 2 SDK software includes tools useful for developing and
testing programs written in the Java programming language and
running on the Java platform.  These tools are designed to be used
from the command line.  Except for applet viewer, these tools do not
provide a graphical user interface.

14.3.3.1.2 Welches Paket enthält die Datei: -f

Sie können sogar herausfinden, aus welchem Paket eine Datei stammt. Dann kommt die Option -f ins Spiel. Aber nicht jede Datei wurde aus einem Paket extrahiert.
defiant:~ # rpm -qf /bin/cp
fileutils-4.1-51
defiant:~ # rpm -qf /etc/fstab
die Datei »/etc/fstab« gehört zu keinem Paket

14.3.3.1.3 Alle Pakete anzeigen: -a

Und natürlich können Sie sich alle installierten Pakete anzeigen lassen. Dafür sorgt die Option -a. Da es sich um einige hundert Pakete handelt, empfielt es sich die Ausgabe zu filtern.
defiant:~ # rpm -qa | sort | less
defiant:~ # rpm -qa | wc -l
    581
defiant:~ # rpm -qa | grep netscape
netscape-plugins-4.78-14
netscape-4.78-34

14.3.3.1.4 Auswahl nach Gruppen: -g

Jedes Paket wird zu einer thematischen Gruppe zugeordnet. Alle Pakete einer solchen Gruppe können Sie sich über den Schalter -g ausgeben lassen.

defiant:~ # rpm -qg System/Shells
sash-3.6-105
ash-0.2-798
bash-2.05b-207
zsh-4.1.1-42
tcsh-6.12.00-285
pdksh-5.2.14-681

14.3.3.1.5 Auswahl nach enthaltenden Ressourcen: -whatprovides

Sie können sich die Pakete auch in Abhängigkeit von den enthaltenen Ressourcen anzeigen lassen. Hierfür ist die Option -whatprovides zuständig.

defiant:~ # rpm -q --whatprovides bash
bash-2.05b-207

14.3.3.1.6 Auswahl nach benötigten Ressourcen: -whatrequires

Auch die gegenteilige Operation ist möglich. Sie können sich auch die Pakete in Abhängigkeit von den benötigten Ressourcen anzeigen lassen. Hierfür ist die Option -whatrequires zuständig.

defiant:~ # rpm -q --whatrequires less
man-2.4.1-60
defiant:~ # rpm -q --whatrequires rpm
yast2-packagemanager-2.8.36-1
defiant:~ # rpm -q --whatrequires libc.so.6 | wc -l
    471

14.3.3.2 Ausführliche Informationen: -i

Ausführliche Informationen über ein installiertes Paket bekommen Sie mit der Schalterkombination -qi.
root@defiant:~ # rpm -qi te_latex-1.0.7-285
Name        : te_latex                     Relocations: (not relocateable)
Version     : 1.0.7                             Vendor: SuSE GmbH, Nuernberg, Germany
Release     : 285                           Build Date: Son 23 Sep 2001 22:43:43 CEST
Install date: Don 22 Nov 2001 16:21:01 CET      Build Host: levi.suse.de
Group       : Applications/Publishing/TeX   Source RPM: tetex-1.0.7-285.src.rpm
Size        : 25835581                         License: 1999 - not specified
Packager    : feedback@suse.de
Summary     : All about LaTeX
Description :
This package provides LaTeX, to be exact LaTeX2e, and a huge amount
software around LaTeX.  This package is required by the most
(La)TeX documents.

Authors:
--------
    Leslie Lamport <lamport@pa.dec.com>
    Johannes Braams
    David Carlisle
    Alan Jeffrey
    Frank Mittelbach <frank.mittelbach@uni-mainz.de>
    Chris Rowley
    Rainer Schöpf
    Members of the LaTeX3 project

SuSE series: tex

14.3.3.3 Im Paket enthaltene Dateien: -l, -c und -d

Eine Liste der im Paket enthaltenen Dateien bekommen Sie durch den Schalter -l.

defiant:~ # rpm -ql cpio
/bin/cpio
/usr/bin/cpio
/usr/bin/mt
/usr/share/info/cpio.info.gz
/usr/share/man/man1/cpio.1.gz
/usr/share/man/man1/mt.1.gz

Bei diesem Schalter können Sie durch den Einsatz des Sabbelschalters -v ausführlichere Informationen über die Dateien bekommen.

defiant:~ # rpm -qlv cpio
-rwxr-xr-x    1 root    root            64215 Sep 23  2003 /bin/cpio
lrwxrwxrwx    1 root    root                9 Sep 23  2003 /usr/bin/cpio -> /bin/cpio
-rwxr-xr-x    1 root    root            19445 Sep 23  2003 /usr/bin/mt
-rw-r--r--    1 root    root             6093 Sep 23  2003 /usr/share/info/cpio.info.gz
-rw-r--r--    1 root    root             4235 Sep 23  2003 /usr/share/man/man1/cpio.1.gz
-rw-r--r--    1 root    root             2031 Sep 23  2003 /usr/share/man/man1/mt.1.gz

Sie können sich aber auch aus der Liste die Dokumentationsdateien -d herauspicken. oder Konfigurationsdateien -c herauspicken

defiant:~ # rpm -qd cron
/usr/share/doc/packages/cron/CHANGES
/usr/share/doc/packages/cron/CONVERSION
/usr/share/doc/packages/cron/FEATURES
/usr/share/doc/packages/cron/MAIL
/usr/share/doc/packages/cron/MANIFEST
/usr/share/doc/packages/cron/README
/usr/share/doc/packages/cron/THANKS
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/man/man8/cron.8.gz
defiant:~ # rpm -qc cron
/etc/crontab
/etc/init.d/cron
/var/spool/cron/deny

Der Schalter -c hat auch Auswirkungen auf andere Ausgaben. Sie können sich z. B. so die Konfigurationsdatei zu einem Programm ganz einfach über die RPM-Datenbank ausgeben lassen.

defiant:~ # rpm -qf /bin/vim
vim-6.2-74
defiant:~ # rpm -qcf /bin/vim
/etc/vimrc

14.3.3.4 Status einer Datei: -s

Auch der Status einer Datei aus dem Paket kann angezeigt werden. Dabei kann die Datei sich in vier definierten Zuständen befinden.

normal
Dies ist der häufigste Zustand, der vorkommt. Die Datei wurde von keinem anderem Paket modifiziert, ersetzt oder gelöscht.
replaced
Dieser Zustand tritt ein, wenn ein anderes Paket diese Datei ersetzt hat.
not installed
Da es ja möglich ist nur Teile eines Pakets zu installieren, kann auch dieser Zustand auftreten. Meistens ist das der Fall bei Dokumentationsdateien.
net shared
Die Datei befindet sich auf einem gemounteten Netzwerkverzeichnis.

Im unteren Beispiel können wir sehen, daß bei hdparm alles ``normal'' ist.

defiant:~ # rpm -qs hdparm
normal        /sbin/hdparm
normal        /usr/share/doc/packages/hdparm
normal        /usr/share/doc/packages/hdparm/Changelog
normal        /usr/share/man/man8/hdparm.8.gz

14.3.3.5 Ressourcen, die das Paket zur Verfügung stellt: -provides

Die meisten Pakete stellen sogenannte Ressourcen zur Verfügung. Dabei handelt es sich nicht um Dateinamen.

defiant:~ # rpm -q --provides cpio
cpio = 2.5-209
defiant:~ # rpm -q --whatprovides rpm
rpm-4.1.1-71
defiant:~ # rpm -q --provides rpm-4.1.1-71
rpminst
librpm-4.1.so
librpmbuild-4.1.so
librpmdb-4.1.so
librpmio-4.1.so
rpm = 4.1.1-71

14.3.3.6 Ressourcen, die das Paket benötigt: -requires

Ein Paket stellt nicht nur Ressourcen zur Verfügung. In den meisten Fälle benötigt ein Paket auch Ressourcen. Diese benötigten Ressourcen können Sie sich dann unter Angabe der Option --requires anzeigen lassen.

defiant:~ # rpm -q --requires cpio
info
/bin/sh
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
ld-linux.so.2
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.2.3)
libnsl.so.1
rpmlib(PayloadIsBzip2) <= 3.0.5-1
defiant:~ # rpm -q --whatprovides libc.so.6
glibc-2.3.2-88

14.3.3.7 Alle Dateiinformationen: -dump

Die Option --dump ermöglicht die Anzeige aller Informationen über die installierten Dateien eines Pakets.

defiant:~ # rpm -q --dump cpio
/bin/cpio 64215 1064338305 80d0d1c254d7d8b1d26e01c6965e82de 0100755 root root 0 0 0 X
/usr/bin/cpio 9 1064338305 00000000000000000000000000000000 0120777 root root 0 0 0 /bin/cpio
/usr/bin/mt 19445 1064338305 db462cdd66b62145772837206c4deea4 0100755 root root 0 0 0 X
/usr/share/info/cpio.info.gz 6093 1064338304 e4da42e2a3b91e15f382805cfaa039d5 0100644 root root 0 1 0 X
/usr/share/man/man1/cpio.1.gz 4235 1064338304 6e73fade22bf5f797eb1a8f9d228c81f 0100644 root root 0 1 0 X
/usr/share/man/man1/mt.1.gz 2031 1064338304 7bedfee0b7194958f49a88aea65f8ef0 0100644 root root 0 1 0 X

Die Informationen werden nicht gerade übersichtlich dargestellt. Gehen wir sie doch einfach mal von links nach rechts am folgenden Beispiel durch.

defiant:~ # rpm -q --dump cpio
/bin/cpio 64215 1064338305 80d0d1c254d7d8b1d26e01c6965e82de 0100755 root root 0 0 0 X
...

14.3.3.8 De- und Installationsskripte: -scripts

Die Skripte zur Installation und Deinstallation der Pakete können Sie sich mit der Option -scripts anzeigen lassen. Es gibt insgesamt 5 Skripte, die aber nicht bei jedem Paket vorhanden sein müssen.

preinstall
Wird ausgeführt vor der Installation der Dateien.
postinstall
Wird ausgeführt nach der Installation der Dateien.
preuninstall
Wird ausgeführt vor dem Löschen der Dateien.
postuninstall
Wird ausgeführt nach dem Löschen der Dateien.
verify
Wird während der Überprüfung der Installation ausgeführt.

Hier ein Beispiel für Skripte für das Paket cpio.

defiant:~ # rpm -q --scripts cpio-2.5-209
postinstall scriptlet (through /bin/sh):

        if test -x sbin/install-info ; then
                sbin/install-info --info-dir=/usr/share/info /usr/share/info/cpio.info.gz
        fi ;
postuninstall scriptlet (through /bin/sh):

        ALL_ARGS=(--info-dir=/usr/share/info /usr/share/info/cpio.info.gz)
        NUM_ARGS=${#ALL_ARGS[*]}
        if test -x sbin/install-info ; then
           if ! test -e "${ALL_ARGS[$((NUM_ARGS-1))]}" ; then
                sbin/install-info --quiet --delete ${ALL_ARGS[*]}
           fi ;
        fi ;

14.3.3.9 Ausgabe formatieren: -queryformat und -querytags

Sie können viele Informationen aus dem Paket beziehen. Damit diese übersichtlich dargestellt werden können, wird die Option --queryformat verwendet. Diese Option hat eine Unmenge von Einstellungsmöglichkeiten, auf die ich hier nicht weiter eingehen will.

Ein einfaches Beispiel für eine Ausgabe.

defiant:~ # rpm -q --queryformat "Hallo Welt\n" cpio
Hallo Welt

Spannend wird es natürlich erst, wenn Informationen ausgelesen werden. Die Liste der möglichen auslesbaren Felder erhalten Sie durch die Option --querytags. Die Liste ist sehr lang.

defiant:~ # rpm --querytags 
HEADERIMAGE
HEADERI18NTABLE
SIGSIZE
SIGMD5
PUBKEYS
...

Nun können Sie Informationen gezielt auslesen.

linux37:~ # rpm -q --queryformat "%{NAME}%{VERSION}%{RELEASE}\n" cpio
cpio2.5209
linux37:~ # rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE}\n" cpio
cpio-2.5-209

Sie können auch minimale Spaltengrößen für die einzelnen Felder definieren. Die Werte werden dann rechtsbündig ausgegeben. Wenn ein Minus vor der Zahl steht ist das Feld linksbündig.

defiant:~ # rpm -qa --queryformat "%-25{NAME}  %15{VERSION}  %5{RELEASE}\n"
aaa_skel                         2003.9.18      4
kdeartwork3-sound                    3.1.4     38
mesa                                 5.0.1     61
suse-release                           9.0      6
ispell-german                          1.5    145
...

Auch Informationen über verschiedene Zeiten sind in den Paketen enthalten.

linux37:~ # rpm --querytags | grep TIME
BUILDTIME
INSTALLTIME
FILEMTIMES
...

Sie können sich z. B. den Installationszeitpunkt ausgeben lassen. Normalerweise können Sie mit der üblichen Zeitangabe nichts anfangen. Sie können daher mit einem sogenannten Flag die Ausgabe konvertieren.

defiant:~ # rpm -q --queryformat "%-25{NAME}  %{INSTALLTIME}\n" cpio
cpio                       988974986
defiant:~ # rpm -q --queryformat "%-25{NAME}  %{INSTALLTIME:date}\n" cpio
cpio                       Fri May  4 13:16:26 2001

Was ist aber, wenn Sie mehrere Einträge für einen Quertag haben? Dann packen Sie einfach diese Variable in eckige Klammern.

defiant:~ # rpm -q --queryformat "==%{NAME}==\n[%{FILENAMES}\n]" cpio
==cpio==
/bin/cpio
/usr/bin/cpio
/usr/bin/mt
/usr/share/info/cpio.info.gz
/usr/share/man/man1/cpio.1.gz
/usr/share/man/man1/mt.1.gz

Die können auch mehrere Werte in einem solchen Array einbinden.

defiant:~ # rpm -q --queryformat "==%{NAME}==\n[%{FILENAMES} (%{FILESIZES} Bytes)\n]" cpio
==cpio==
/bin/cpio (64215 Bytes)
/usr/bin/cpio (9 Bytes)
/usr/bin/mt (19445 Bytes)
/usr/share/info/cpio.info.gz (6093 Bytes)
/usr/share/man/man1/cpio.1.gz (4235 Bytes)
/usr/share/man/man1/mt.1.gz (2031 Bytes)

Sie können auch alle Werte in das Array packen. Werte, die im Paket nicht mehrfach vorkommen, werden dann mit einem Gleichheitszeichen versehen.

defiant:~ # rpm -q --queryformat "[%{=NAME}: %{FILENAMES} (%{FILESIZES} Bytes)\n]" cpio
cpio: /bin/cpio (64215 Bytes)
cpio: /usr/bin/cpio (9 Bytes)
cpio: /usr/bin/mt (19445 Bytes)
cpio: /usr/share/info/cpio.info.gz (6093 Bytes)
cpio: /usr/share/man/man1/cpio.1.gz (4235 Bytes)
cpio: /usr/share/man/man1/mt.1.gz (2031 Bytes)

Haben Sie mal Lust eine große Datei zu erstellen ?

defiant:~ # rpm -qa --queryformat "[%{=NAME}: %{FILENAMES} (%{FILESIZES} Bytes)\n]" \ 
> | sort > allepaketdateien.txt


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