RPM (Redhat Package Manager) ist der am weitesten verbreitete PaketManager - siehe auch apt/RPM.

Homepage: http://www.rpm.org/

Lizenz: GPL

FrontEnds

mit Auflösen von Abhängigkeiten

  • urpmi (bei jeder Installation von Mandriva Linux dabei, kann aber natürlich auch auf anderen RPM-Systemen installiert werden)

  • apt/RPM

  • yum (bzw. kyum, Gnome-yum und Yumex als GUI)

  • up2date von RedHat (Veraltet. Seit Fedora-Core 5 durch yum ersetz)

  • SuSE/YaST ist das von SUSE-Linux entwickelte FrontEnt nicht nur zur RPM-Paketverwaltung (yast ist meines Wissens nach nicht frei)

  • poldek

  • SMART

simple GUIs für RPM

  • kpackage
  • gnorpm

ähnliche Software-Projekte

Tips & Tricks

ce, 20031102

Achtung bei "fremden" RPM-Paketen

/!\ Obwohl viele Distributionen das RPM-Format benutzen, heißt das NICHT, dass man z.B. problemlos ein RPM von RedHat auf einem SuSE-System installieren kann. Die Distributionen unterscheiden sich oft in kleinen Einzelheiten, die Dir aber das System ziemlich kaputtkriegen können, wenn Du hier das falsche Paket zwanghaft installierst. Besonders gilt das für irgendwelche Bibliotheken.

Bei der normalen Installation (ohne Zwang, d.h. kein -nodeps oder gar --force) kann normalerweise nichts schiefgehen, denn genau deswegen gibt es die PaketAbhängigkeiten.

Fazit: SuSE RPM Pakete nur auf einem SuSE System installieren, etc.

Pakete hängen von den Versionen der Bibliotheken ab, unter denen sie kompiliert wurden. Wenn man also Probleme bekommt, weil ein Paket neuere (evtl. auch bei älteren) Bibliotheken benötigt, kann es helfen, das Paket selbst zu kompilieren.

Updaten mit einem (1) Kommando

Wenn man sein System komplett updaten will, sollte man sich eines der oben genannten Frontends bedienen. Falls man die Pakete schon heruntergeladen hat (oder z.B. auf CD erhalten) bietet sich der Einsatz von yum an, da das Erstellen von sog. Repositories damit besonders einfach ist.

Die manuelle Vorgehensweise wird im Folgenden beschrieben.

Wenn man sich die kompletten Updates / Security-Fixes seiner RPM-basierten Distribution runtergeladen hat, dann aber nur die für die bereits installierten Pakete einspielen will, kann man das folgende Kommando gut gebrauchen - vorher sollte man aber Kernel-RPMs in ein anderes Verzeichnis verschieben, siehe auch Hinweis weiter unter zu Kernel und glibc-Updates):

rpm -Fvh *.rpm # Auffrischen der Installation mit allen RPMs im aktuellen Verzeichnis

Falls es Probleme gibt, kann man nach reiflicher Überlegung auch noch ggf. --nodeps und --force hinzufügen.

/!\ es ist manchmal wichtig, wirklich ALLE Updates mit *.rpm auf einen Schlag zu erfassen. Ansonsten kann es leicht passieren, dass Abhängigkeiten fehlschlagen oder das System nachher nicht richtig funktioniert, falls man dies per --nodeps ignorieren hat lassen. Vor allem bei Bibliotheken (libs) oder anderen grundlegenden Dingen kann das leicht passieren.

Vorsicht bei glibc-Updates

Ein glibc-Update ist ein tiefgreifender Eingriff in ein Linux-System, denn fast alle Linux-Programme sind dynamisch gegen die glibc gelinkt. Dies hat zur Konsequenz, dass nach Einspielen einer nicht funktionierenden glibc praktisch nichts mehr funktioniert.

Daher folgende Ratschläge aus eigener praktischer Erfahrung:

  • nicht ohne zwingenden Grund brandneue glibc-Updates einspielen, lieber erst ein paar Tage warten

  • keine glibc-Updates unter Zeitdruck machen - falls ein solcher Update schiefläuft, können es leicht ein paar Stunden mehr werden
  • glibc-Updates am besten im Single-User-Mode (vorher telinit S)

Falls es trotzdem schiefgeht (selten, kommt aber vor):

  • folgende Programme sind meist statisch gelinkt, tun also auch ohne glibc: rpm, ash / sash (manchmal gibt es auch Versionen mit der Endung .static)

  • booten mit: linux init=/bin/ash # irgendeine statisch gelinkte Shell

    • folgendes tut nicht, weil i.d.R. auch gegen glibc gelinkt:
    • der normale init

    • die normale sh / bash

    • viele externe Kommandos, also praktisch fast alle, die nicht in der ash / sash eingebaut sind
  • dann per rpm eine funktionierende glibc installieren (von CD/DVD, von Platte ...)

Kernel-Updates

Kernel-Updates immer mit rpm -ivh ... einspielen, denn bei -U wird ja der alte Kernel entfernt - dies will man aber erst, nachdem man den neuen ausgiebig getestet hat!

Anpassen / kontrollieren der LILO/GRUB-Konfiguration nicht vergessen.

Bei Verwendung von lilo unbedingt auch den LILO-Map-Installer laufen lassen: lilo -v und auf Fehlermeldungen achten.

Mini-Howto

Installieren/Deinstallieren/Updaten

Installation von RPMs

rpm -ivh paket.rpm

Installation von RPMs u. ignoriert dabei Datei-Konflikte, d. h. überschreibt Dateien ( z. B. Bibliotheken) die bereits durch andere Pakete installiert wurden (bitte mit Vorsicht anwenden).

rpm -ivh --replacefiles paket.rpm

Installation von RPMs trotz nicht erfüllter Abhängigkeiten (nicht zu empfehlen)

rpm -ivh --nodeps paket.rpm

Upgrade von Paketen (wenn das Paket noch nicht installiert ist, wird es neu installiert)

rpm -Uvh paket.rpm

Auffrischen von Paketen (nur bereits installierte Pakete updaten)

rpm -Fvh paket.rpm

Deinstallation von Paketen

rpm -e paket

Deinstallation von Paketen trotz bestehender Abhängigkeiten (nicht zu empfehlen)

rpm -e --nodeps paket

Tipp: Ohne die Optionen -vh gibt RPM keinen Mucks von sich, solange kein Fehler auftritt.

Abfragen

Was ist alles installiert?

rpm -qa (wenn man was bestimmtes sucht, einfach noch ein | grep suchbegriff dahinter)

Zu welchem Paket gehört eine Datei?

rpm -qf <pfad/zur/datei>

Paketbeschreibung eines installierten Paketes anzeigen

rpm -qi paket

Pakete überprüfen

System auf Veränderungen gegenüber der RPM-Datenbank prüfen

rpm -Va

Signatur von RPM-Dateien prüfen

rpm --check-sig paket.rpm

RPMs aus src.rpms selber bauen

siehe /BuildAlsUser

Fragen & Antworten

Wie kann ich ein RPM relativ zu einem Verzeichnis entpacken? Also ich will nicht mein "/" als Basisverzeichnis haben, sondern ein von mir definiertes! -- JanRoehrich 2002年09月22日 00:52:21

  • Mittels "--badreloc --relocate /=<dir>", das macht aber sehr selten Sinn (nie), da die meisten (alle) Pakete nicht verschiebbar sind. Die Verzeichnisse stehen dann so auch in der RPM-Datenbank.

  • Ich glaub er wollte eher wissen, wie man in nen chroot was installiert (z.B. für /nfsroot) - das geht m.W. auch, Optionen siehe RTFM.

  • salbox@gmx.net Man kann rpm auch anweisen ein anderes Root-Verzeichnis als "/" zu verwenden:

    • rpm -hiv -r /<Verzeichnis> <Packet> Das bedeuted das unter /<Verzeichnis> eine neue rpm-db aufgebaut wird; Das Packet ist aber ausgepackt!

  • @ salbox

Und wie packe ich src.rpms aus? -- JanRoehrich 2002年09月22日 01:47:21rpm

  • rpm -i -- BastianBlank 2002年09月22日 01:52:40

  • das geht so auch als User, die Dateien landen dann in den in ~/.rpmmacros definierten Verzeichnissen

Wenn man die Pakete nicht installieren will, sondern wirklich nur entpacken, dann hilft rpm2cpio oder das Programm unp. In letzterem Falle reicht die Eingabe von unp paketname.rpm.

  • habe ich versucht, aber mit der Bedienung von cpio komme ich nicht klar! Was muss ich eingeben, damit ich einfach den Inhalt einer cpio-Datei in einen Verzeichnisbaum auspacken kann? -- JanRoehrich 2002年09月22日 12:50:55

    • cd zielverzeichnis; cpio -i --no-absolute-filenames --make-directories </pfad/zu/cpiofile


  • Ich hab' vor kurzem ein Problem gehabt, daß solchermassen auskommentierte Defines trotzdem ausgewertet wurden:

##%define foo bar

War auf SuSE 7.0 mit dem dortigen RPM (hab' grad kein System zur Hand zum Nachschauen der exakten Version). Könnte mal jeamand versuchen, das (ggf. mit aktuellerem RPM) nachzuvollziehen? -- JürgenHermann 2002年11月29日 07:55:09

  • angeblich ist das ein Feature, Macros werden auch in Kommentaren ausgewertet, zum Ausschalten ein zweites Prozentzeichen davorsetzen, also
    #%%define foo bar


  • Frage: Wie packt man rpm-Pakete manuell aus?
  • z.B. mit rpm2cpio:

    rpm2cpio PaketName.rpm | cpio -i --make-directories

    Ist aber nur eine von vermutlich 1000 Möglichkeiten. -- HenrykGerlach 2004年09月16日 08:24:19

    • Gibt es unter diesen 1000 Möglichkeiten eine die funktioniert? -- ThomasHochstetter 2006年11月28日 01:53:13

RPM (zuletzt geändert am 2009年08月08日 20:00:01 durch i577B6D5B)

AltStyle によって変換されたページ (->オリジナル) /