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)
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)
simple GUIs für RPM
- kpackage
- gnorpm
ähnliche Software-Projekte
http://thomas.apestaart.org/projects/mach/ to build rpm packages
Tips & Tricks
- Suchmaschinen für RPM-Pakete:
OffeneFrage: Wäre es nicht eine gute Idee, eine Tauschbörsensoftware für RPMs zu haben statt der Webseiten wie rpmssek etc.?
ce, 20031102
Das RPM-Buch nicht mehr ganz aktuell, aber sehr ausführlich
Maximum RPM englisches Buch, was sehr ausführlich den gesamten Aubau von RPM beschreibt
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
-- RonnyBuchmann 2002-11-29 15:08:09
- 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