RPM - Redhat Package Manager

Paket auf dem Installationsmedium finden


Nach der abgeschlossenen Linux-Installation wollen mitunter wir noch das eine oder andere Programm nachinstallieren. Im allgemeinen kennen wir auch das Paket, in welchem sich das Programm befindet. Ein

root@sonne> rpm -i VollständigerPaketname

ist dann kein Problem. Ganz anders sieht es aus, wenn wir nicht genau wissen, welches Paket wir nachzuinstallieren haben. Wir können mittels

root@sonne> rpm -qpl VollständigerPaketname

die Inhaltslisten der "verdächtigen" Pakete einsehen oder, was sicher eleganter ist, uns eines Shellskriptes bedienen. Allerdings ist es gar nicht so einfach, ein Skript zu schreiben, das dann auch genau das tut, was wir von ihm erwarten. Nun, @micha hat in den www.linuxforen.de genau das Skript entworfen und vorgestellt, das nicht nur das Peket/die Pakete anzeigt, in dem/in denen unser Programm enthalten ist; es werden auch gleich die Installations-Verzeichnisse mit ausgegeben. Weiteren Komfort wie das mounten und das abschliessende umounten CD-ROM-Laufwerks war dann schnell ergänzt. Bevor Ihr das Skript benutzen könnt, müsst Ihr noch den mount-Pfad und das Verzeichnis zu Eurem Installationsmedium anpassen. Ich habe hier die Pfade für RedHat gewählt:

#!/bin/sh
#
mount /mnt/cdrom
Directory="/mnt/cdrom/RedHat/RPMS/"
#
PrintHeader="true"
#
for i in `find $Directory -name "*.rpm"`;
  do
    for n in `rpm -qpl $i | grep "$1"`;
      do
        if [ "$1" = `basename $n` ];
          then
            if [ $PrintHeader = "true" ];
              then
                 echo "`basename $i` :"
                 PrintHeader="false"
            fi
            echo $n
        fi
      done
    if [ $PrintHeader = "false" ];
      then
        echo "---------------------------------------------"
        PrintHeader="true"
    fi
    done
#
umount /mnt/cdrom

Legt das Skript in /usr/local/bin (zB. als findrpm) ab und verseht es mit den Ausführungsrechten:

root@sonne> chmod +x findrpm

Der Aufruf erfolgt dann mittels:

root@sonne> findrpm DateiName
nach oben

Probleme mit der RPM-Datenbank

Zum Glück sind Probleme mit der RPM-Datenbank selten. Doch wenn plötzlich kein Update oder auch keine Deinstallation mehr möglich ist, wird man als User, dem so etwas noch nicht passiert ist, doch erst mal recht ratlos dastehen. Da man die RPM-Datenbank selbst nicht zu Gesicht bekommt, vermutet man sicher erst mal alles mögliche und erinnert sich vielleicht erst mal gar nicht an eine rpm-Option, die man irgendwann mal gelesen hat:

root@sonne> rpm --rebuilddb

Und genau das war es dann meist auch schon. Die rpm-Datenbank hatte ein internes Problem und wurde nun mit diesem Command wieder neu aufgebaut. Eurem Update-Vorhaben sollte nun nichts mehr im Wege stehen.


Unvollständig installiertes RPM-Paket deinstallieren

Zuerst sollte mit

root@sonne> rpm -q PaketName

nachgeschaut werden, ob sich das Paket überhaupt in der RPM-Datenbank befindet. Wenn ja, sollte ein

root@sonne> rpm -e  PaketName

das Paket löschen können, eventuell auch

root@sonne> rpm -e --force  PaketName

oder gar

root@sonne> rpm -e --force --nodeps PaketName

Wenn das Löschen mit keinem der Befehle funktioniert oder das Paket nicht in der RPM-Datenbank vorhanden ist, kann versucht werden, das Paket zu installieren und dann wieder zu deinstallieren.

Autor: Omega-X