Forespørgsler til rpm databasen

Når man installerer programmer, registrerer rpm oplysninger om programmet i en database, som det vedligeholder. rpm-programmet giver også mulighed for en lang række queries, d.v.s. forespørgsler om hvilke software pakker der er installeret, hvilke filer de indeholder, og hvorvidt software pakkerne er i god behold på systemet.

En query foretages ved at kalde rpm --query (eller kort: rpm -q), plus nogle options der bestemmer hvilken slags query det er, og hvilke software pakker den skal gå på.

En query kan bruges på

  1. enkelte, specificerede pakker som er installeret
  2. alle pakker, der er installeret
  3. rpm-filer, som man har hentet men endnu ikke installeret.
Default er, at en query retter sig mod enkelte installerede pakker, som man så angiver med deres pakke-navn på rpm kommando linien.
Hvis man vil lave en query på alle pakker, der er installeret, skal man bruge rpm --query -a
Hvis man skal lave en query på en rpm-fil skal man bruge rpm --query -p, og så angive rpm-filnavnet.
 

Når man bare skal vide hvad der er: rpm -q

I sin mest enkle form, vil query-funktionen blot liste det fulde rpm pakke-navn, d.v.s. pakkens navn og versions-nummer.  En hurtig oversigt over alle de software pakker, der er installeret,  fås derfor med:
    rpm -qa

Mere detaljeret information: rpm -q -i

Lidt mere detaljeret information fås, hvis man tilføjer -i option til query-kommandoen. (Det skal ikke forveksles med --install / -i optionen). Så får man information om pakken, bl.a. version, hvem der lavede rpm-pakken, og hvad programmet er for noget:

osiris:~ $ rpm -qi bash
Name        : bash                     Distribution: Manhattan
Version     : 1.14.7                         Vendor: Red Hat Software
Release     : 7                          Build Date: Mon Apr 27 17:17:48 1998
Install date: Fri Jun 26 23:21:15 1998   Build Host: porky.redhat.com
Group       : Shells                     Source RPM: bash-1.14.7-7.src.rpm
Size        : 488117                      Packager : Red Hat Software
Summary     : GNU Bourne Again Shell (bash)
Description :
Bash is an sh-compatible command language interpreter that executes commands read
from the standard input or from a file. Bash also incorporates useful features from
the Korn and C shells (ksh and csh).

Bash is ultimately intended to be a conformant implementation of the IEEE Posix Shell
and Tools specification (IEEE Working Group 1003.2).

Version feltet er versions-nummeret for selve software pakken, og følger den versions-nummerering som forfatterne til den pågældende software benytter.

Release feltet derimod bruges, hvis man laver flere udgaver af en RPM-pakke, baseret på den samme version af f.eks. bash. Det kan være fordi man opdager, at en RPM-pakke var blevet genereret med en forkert konfigurations-option, f.eks. Så beholder man versions-nummeret, men tæller release-nummeret op. Når rpm-programmet bruges til at opdatere et system med, checker det både versions-nummeret, og release-nummeret.

Distribution angiver som regel, hvilken version af RedHat pakken er blevet lavet til - f.eks. er denne udgave af bash-pakken lavet til RedHat 5.1, også kaldet 'Manhattan'. Den, der laver RPM-pakken, kan selv vælge hvad der skal stå i dette felt - eksempelvis har de præ-kompilerede rpm-filer fra KDE projektet teksten KDE i dette felt.

Source RPM feltet er navnet på den RPM source fil, der blev brugt til at generere den binære rpm-fil. Hvis man vil ændre i en RPM-pakke (lave sine egne RPM-pakker, f.eks. med nyere versioner af softwaren) så er det Source RPM filen, man skal lede efter - den indeholder både selve source-koden til programmet, og en fil der kontrollerer hvordan pakken er konfigureret og oversat.
 

Hvilke filer er med i pakken: rpm -q -l

Endelig kan man selvfølgelig også se, hvilke filer rpm-pakken indeholder: --list eller blot -l option lister alle de filer, som rpm-pakken indeholder.
Bemærk: Der sker ikke nogen kontrol af, om filerne faktisk findes installeret; --list optionen kigger kun i rpm databasen og trækker alle de filnavne ud, som var med i den oprindelige pakke, der blev installeret. Hvis du vil vide, om filerne stadig findes skal man bruge rpm's verify funktion.
 

Hvilken pakke hører /usr/bin/moc dog til ? rpm -qf

Det hænder, at man støder på en fil, som man ikke kan finde ud af hvor kommer fra. F.eks. støder man på et program, som man ikke kan finde ud af hvad gør, og heller ikke kan huske at man har installeret.

Her kan man også bruge rpm's query funktion - men nu skal man så bruge --file (kort: -f) Så vil rpm finde den software pakke, som filen kommer fra, og udføre query funktionen på den pakke.

Svaret på spørgsmålet i overskriften fås således med

osiris:~ $ rpm -qf -i /usr/bin/moc
Name        : qt-devel                    Distribution: (none)
Version     : 1.33                              Vendor: (none)
Release     : 1rh5                          Build Date: Wed Mar 18 15:38:35 1998
Install date: Sun Jun 28 12:52:35 1998   Build Host: viffer.oslo.metis.no
Group       : X11/Libraries                 Source RPM: qt-1.33-1rh5.src.rpm
Size        : 6938597
Packager    : Troll Tech <info@troll.no>
Summary     : Include files and documentation needed to compile Qt programs
Description :
Contains the files necessary to develop applications using Qt: header
files, the Qt meta object compiler, man pages, HTML documentation and
example programs.  See http://www.troll.no for more information about
Qt, or file:/usr/lib/qt/html/index.html for Qt documentation in HTML.
 
Læg mærke til, hvordan man kan kombinere --file query optionen med f.eks. -i for at få detaljeret information om den pakke, som /usr/bin/moc kommer fra. LIgnende kombinations-muligheder kan man gøre med de andre query-options, f.eks. --list for at liste alle de filer, som hører sammen med /usr/bin/moc
 



Henrik Størner <storner@image.dk>