Die Grundlagen von RPM - Red Hat Paketmanagement [Linux 101]
In früheren Artikeln haben wir das System zur Installation von Software auf Debian-basierten Systemen untersucht, einschließlich Ubuntu und anderen. RPM oder der "Red Hat Package Manager", der 1995 in Red Hat Linux 2.0 eingeführt wurde, ist jetzt das bevorzugte Paketverwaltungssystem für Distributionen, die auf Red Hat basieren, einschließlich CentOS und Oracles Linux Distribution sowie SuSE.
Jetzt werden wir sehen, wie dieses System mit dem "Ubuntu-Weg" der Verwaltung von Software verglichen wird.
Hinweis : Wenn Sie ein DEB-basiertes System verwenden, haben Sie möglicherweise den Befehl rpm. Sie verfügen jedoch wahrscheinlich nicht über eine Paketdatenbank. Daher können einige der folgenden Befehle einige Fehler anzeigen, die darauf verweisen.
RPM-Paketgrundlagen
Ein RPM-Paket besteht wie DEBs aus einem Archiv von Dateien, die der Paketmanager bei der Installation auf Ihrem Computer ablegt. Es enthält auch die gleiche Art von Informationen über andere Software, die es benötigt, damit das System Ihre Abhängigkeiten für Sie herunterladen und installieren kann. Das alles wird einfach anders verpackt.
Wie DEB-Dateien kann ein RPM-Paket entweder binären (oder ausführbaren) Code, Quellcode, der vor der Installation in Binärdateien kompiliert wurde, oder architekturunabhängige Dateien (wie Dokumentation) enthalten. Eine RPM-Datei ist ein cpio- Archiv, ein Archivformat, das ursprünglich für Bandsicherungen verwendet wurde. RPMs enthalten drei primäre Datentypen:
- Daten, die die Datei als RPM-Paket identifizieren
- Eine Signatur, mit der das System überprüfen kann, ob das Paket manipuliert wurde (z. B. ein MD5-Hash des Pakets)
- Der "Header", der Informationen zum Paket enthält, z. B. Name, Versionsnummer und Zusammenfassung
- Die "Payload" oder die Dateien, die das Paket auf Ihrem System installiert
Im Gegensatz zu Debian-Paketen ist das Anzeigen einiger dieser Informationen nicht so einfach wie das Entpacken des Pakets und das Betrachten einiger Textdateien. Wenn wir uns die Signatur ansehen wollen, um sie mit einer Signatur in der RPM-Datenbank des Systems zu vergleichen, müssen wir das Befehlszeilen-RPM-Programm wie folgt verwenden:
sudo rpm --checksig rpm-4.9.1.3-6.fc17.x86_64.rpm
Um die Header-Informationen anzuzeigen, können Sie das Paket mit dem folgenden Befehl abfragen:
sudo rpm -qip rpm-4.9.1.3-6.fc17.x86_64.rpm
Hier sagt das "-q" -Flag RPM, das Paket abzufragen, das "i", um Informationen darüber zu erhalten, und das "p", dass Sie eine Paketdatei als Argument angeben. Um zu sehen, welche Dateien im Paket enthalten sind, benötigen Sie eine Liste anstelle von Informationen oder Folgendes:
sudo rpm -qlp rpm-4.9.1.3-6.fc17.x86_64.rpm
Sie können RPM-Dateien auch direkt in vielen Archivmanagern öffnen, um zu sehen, wie die Dateien im Paket organisiert sind.
Die RPM-Datenbank
Wie oben erwähnt, ist eines der Hauptelemente des Red Hat-Paketsystems die RPM-Datenbank. Gespeichert in "/ var / lib / rpm" enthält dieses Verzeichnis eine Reihe von Unterverzeichnissen und Dateien mit Informationen zu den auf dem System installierten Paketen. Diese Datenbank wird normalerweise während der Installation des Systems eingerichtet. Einmal initialisiert, wird jedes auf dem System installierte Paket in dieser Datenbank aufgezeichnet - zum Beispiel wird die Mehrheit der Pakete, die mit dem System installiert werden, mit RPM ausgeführt, so dass ihre Datensätze enthalten sind.
Um die RPM-Datenbank abzufragen, können Sie ähnliche Befehle wie oben verwenden, wobei das Flag "p" weggelassen wird (weil wir kein Paketdateiargument bereitstellen). Der folgende Befehl durchsucht beispielsweise die RPM-Datenbank und listet alle Dateien auf, die Teil des RPM-Pakets sind (falls es installiert ist):
sudo rpm -ql rpm
Auf die gleiche Weise listet der folgende Befehl alle im System installierten Pakete auf:
sudo rpm -qa
Es gibt eine große Anzahl an Flags und Optionen, die mit den RPM-Tools zur Verwaltung Ihrer Software verwendet werden können. Eine gute Referenz ist die Dokumentation des Fedora-Projekts.