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.
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.
defiant:~ # rpm -qf /bin/cp fileutils-4.1-51 defiant:~ # rpm -qf /etc/fstab die Datei »/etc/fstab« gehört zu keinem Paket
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
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
defiant:~ # rpm -q --whatprovides bash bash-2.05b-207
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
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
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
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
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
--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
--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 ...
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 ;
--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