|
|
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| {{DISPLAYTITLE:rpm}}
| | [[Kategorie:Linux/Software/Verwaltung]] |
| '''rpm''' ist ein [[Paketverwaltung]]s-System für [[Linux]]
| |
| | |
| == Beschreibung ==
| |
| [[Datei:RPM Logo.svg|180px|thumb| Logo von RPM Package Manager]]
| |
| | |
| '''RPM Package Manager''' ist ein [[Freie Software|freies]] ([[GNU General Public License|GPL]]) [[Paketverwaltung]]s-System, ursprünglich entwickelt von dem Unternehmen [[Red Hat]].
| |
| * Es umfasst das Paketformat und alle nötigen Programme, um RPM-Pakete zu erstellen und zu [[Paketverwaltung|verwalten]].
| |
| | |
| Das RPM-Format ist Teil der [[Linux Standard Base]]
| |
| | |
| === Bezeichnung ===
| |
| ; Ursprünglich
| |
| '''R'''ed Hat '''P'''ackage '''M'''anager
| |
| ;Aktuell
| |
| '''R'''PM '''P'''ackage '''M'''anager
| |
| | |
| == Installation ==
| |
| == Anwendungen ==
| |
| === Fehlerbehebung ===
| |
| == Syntax ==
| |
| === Optionen ===
| |
| === Parameter ===
| |
| === Umgebungsvariablen ===
| |
| === Exit-Status ===
| |
| == Konfiguration ==
| |
| === Dateien ===
| |
| == Sicherheit ==
| |
| == Dokumentation ==
| |
| === RFC ===
| |
| === Man-Pages ===
| |
| === Info-Pages ===
| |
| == Siehe auch ==
| |
| # [[Paketverwaltung]]
| |
| | |
| == Links ==
| |
| === Projekt-Homepage ===
| |
| === Weblinks ===
| |
| === Einzelnachweise ===
| |
| <references />
| |
| == Testfragen ==
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 1''
| |
| <div class="mw-collapsible-content">'''Antwort1'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 2''
| |
| <div class="mw-collapsible-content">'''Antwort2'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 3''
| |
| <div class="mw-collapsible-content">'''Antwort3'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 4''
| |
| <div class="mw-collapsible-content">'''Antwort4'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 5''
| |
| <div class="mw-collapsible-content">'''Antwort5'''</div>
| |
| </div>
| |
| | |
| [[Kategorie:Entwurf]] | |
| | |
| | |
| = Wikipedia =
| |
| == Hintergrund ==
| |
| In der Frühzeit von Linux waren die ''.tgz''-Pakete gängig; eine automatisierte Verwaltung war mit ihnen kaum möglich.
| |
| * Abhängigkeiten wurden weder aufgelöst, noch wurde zumindest eine Warnung ausgegeben.
| |
| * Anwender, die Software installieren wollten, mussten entweder genug wissen, um diese Abhängigkeiten selbst aufzulösen, oder installierten einfach alle Pakete, was aber wiederum die Gefahr von Paketkonflikten mit sich brachte.
| |
| | |
| Gewisse Ansätze einer Paketverwaltung gab es, als in Anlehnung an die großen Paketverwaltungen der etablierten Unix-Systeme dieser Zeit – wie SunOS (ein Vorläufer von [[Solaris (Betriebssystem)|Solaris]]), [[HP-UX]], [[OSF/1]], [[IRIX]] oder [[Apollo/Domain|Apollo Domain/OS]] – erste Werkzeuge entwickelt wurden, die jedoch nur wenige Funktionen mitbrachten.
| |
| | |
| Dies verursachte den Linux-Distributoren dieser Zeit erhebliche Probleme beim Support und bei der Pflege ihrer Software, woraufhin zwei konkurrierende Systeme entwickelt wurden: das Debian-Paketmanagement dpkg für [[Debian-Paket]]e, initiiert vom [[Debian]]-Projekt, und ''RPM'' von [[Red Hat]].
| |
| | |
| Das Ziel war es, Softwarepakete genauso für den Entwickler wie auch für den Anwender einfacher handhabbar zu machen, Abhängigkeiten sollten berücksichtigt und möglichst automatisch aufgelöst werden.
| |
| * Redundanzen wie doppelte Dateien oder Verzeichnisse sollte das System vermeiden, und es sollte möglich sein, Software sauber zu deinstallieren und dabei Abhängigkeiten zu beachten.
| |
| * Auch sollte es möglich werden, Software einfach zu aktualisieren und Konfigurationsdateien sicher zu verwalten.
| |
| | |
| Eine Funktion zur Rückabwicklung bei Fehlern (Transaktionen und Rollback) ist inzwischen ebenso Bestandteil von RPM wie bei den großen Paketverwaltungen von HP-UX und Solaris, wenn auch noch nicht in gleichem Umfang.
| |
| | |
| == Geschichte ==
| |
| Die erste 1995 für [[Red Hat Linux]] 2.0<ref name="RHL2">{{Internetquelle |url=http://www.redhat.com/about/company/history.html | titel=Red Hat history| hrsg=[[Red Hat]] |sprache=englisch | zugriff=2013-10-25}}</ref> entwickelte Version von RPM basierte auf RPP, PMS (in den 1990er Jahren von Rik Faith für Linux-Betriebssysteme entwickelt) und PM; sie wurde in [[Perl (Programmiersprache)|Perl]] geschrieben.
| |
| * Später wurde RPM in [[C (Programmiersprache)|C]] neu geschrieben.
| |
| | |
| Ursprünglich bedeutete RPM ''R''ed Hat ''P''ackage ''M''anagement.
| |
| * Ende der Neunziger wurde der Name jedoch in ''R''PM ''P''ackage ''M''anagement geändert.
| |
| * Der Hintergrund waren rechtliche Aspekte.
| |
| * RPM wurde inzwischen von vielen Distributoren verwendet, und man strebte die Aufnahme von RPM in die [[Linux Standard Base]] an.
| |
| * Der Unternehmensname (Firma) im Namen der Software hätte dies zumindest erschwert.
| |
| | |
| RPM wurde von zahlreichen [[Linux-Distribution]]en, wie z. B. [[OpenSUSE|SUSE]], [[Mageia]] oder [[Mandriva Linux]] übernommen.
| |
| * Auch einige [[Unix]]-Systeme wie z. B. [[IBM]] [[AIX]] oder [[Solaris (Betriebssystem)|Solaris]] sowie nicht-[[unixoides System|unixoide Systeme]] wie [[Novell]] [[Netware]] nutzten RPM.
| |
| | |
| Zwischen 1999 und 2006 kam die Weiterentwicklung der Software praktisch zum Erliegen.
| |
| * Jeff Johnson, der Hauptentwickler von RPM bei Red Hat bis 1999, entwickelte jedoch die Software teilweise weiter und kümmerte sich um Fehlerkorrekturen.
| |
| * Aus diesem Zweig entstand RPM5 als Weiterentwicklung von RPM der Version 4.<ref name="story">[http://magazine.redhat.com/2007/02/08/the-story-of-rpm/ ''The Story of RPM''] auf redhat.com, 8.
| |
| * Juli 2007</ref>
| |
| | |
| Die verschiedenen Distributoren entwickelten in der Zwischenzeit (1999–2006) eigene Patches für RPM, um Fehler zu beseitigen; Johnsons Patches wurden meist nicht verwendet.
| |
| | |
| Im Dezember 2006 schlossen sich verschiedene Distributoren unter Red Hat und Novell zum RPM-Projekt zusammen und entwickelten RPM mit den jeweiligen distributionseigenen Patches – weiterhin ohne Johnsons Änderungen – gemeinsam weiter.<ref name="dez">[http://www.pro-linux.de/NB3/news/1/10616/die-zukunft-von-rpm.html Pro-Linux], News von 15.
| |
| * Dezember 2006</ref>
| |
| | |
| Daraus resultieren nun zwei Versionen von RPM: RPM mit Patches der Distributoren und RPM5, welches sich als RPM aus der „originalen [[Codebasis]]“ bezeichnet.<ref name="codebase">{{Webarchiv|url=http://rpm5.org/ |wayback=20070820044303 |text=rpm5.org |archiv-bot=2018-12-11 11:16:26 InternetArchiveBot }}</ref>
| |
| | |
| Da die meisten Linux-Distributionen freie Software sind, besteht der Vorteil einer bestimmten Distribution gegenüber anderen zu einem großen Teil aus den Annehmlichkeiten des jeweiligen Paket-Managers (und aus den zusammengestellten, getesteten und regelmäßig aktualisierten (RPM-)Paketsammlungen des jeweiligen Distributors im Internet).
| |
| Pakete zwischen Distributoren auszutauschen, war früher nahezu unmöglich.
| |
| * Dies wurde mit RPM einfacher, ist aber immer noch mit Problemen behaftet, da die verschiedenen Distributionen, die RPM benutzen, oft verschiedene Versionen und/oder Konfigurationen von Systemsoftware wie etwa Grafik-Bibliotheken verwenden.
| |
| | |
| Für den Entwickler vereinfacht ein Paketverwaltungssystem wie RPM das Einbauen von Software in die durch die Distribution vorgegebene Struktur (Pfade, Abhängigkeiten, Dateinamen, Paketnamen).
| |
| * Das Paketformat selbst überprüft allerdings den jeweiligen Inhalt eines Pakets nicht automatisch.
| |
| * Der Entwickler bestimmt den Aufbau des Paketes selbständig und muss sich damit für jede Distribution in die jeweiligen Besonderheiten einarbeiten.
| |
| | |
| Mit Einführung der Linux Standard Base wurden viele Unstimmigkeiten zwischen den Distributoren ausgeräumt.
| |
| * LSB erleichtert die Arbeit der Paketbauer erheblich, weil zumindest Dateinamen und Pfade vereinheitlicht sind.
| |
| * Entsprechende Sorgfalt des Paketmaintainers vorausgesetzt, lässt sich relativ sicher ein RPM von einem anderen LSB-Distributor in ein beliebiges anderes LSB-System einspielen.
| |
| | |
| == Portierungen ==
| |
| Eine Paketverwaltung ist systemabhängig.
| |
| * So besitzen außer verschiedenen Distributoren nicht mal alle Linuxanbieter das gleiche Paketformat.
| |
| * Andere Systeme bringen natürlich ihre eigene Software mit.
| |
| | |
| Da aber auf vielen anderen Unix-Systemen mittlerweile die GNU-Software zur Grundausstattung gehört (zumindest installiert der Systemverwalter sie in der Regel ganz schnell nach) wurde auch RPM – vor allem im Rahmen des Projektes [[OpenPKG]] – auf andere Systeme portiert, wodurch man einfach zusätzliche Software einspielen kann.
| |
| | |
| In gewissem Sinn ist dies gleichermaßen ein Fortschritt und ein Rückschritt.
| |
| * Bisher haben Systemverwalter aus den Quellen die Software selber kompiliert und dann in das System eingepflegt.
| |
| * Dieser Schritt und die damit angefallene Arbeit entfallen natürlich.
| |
| | |
| Allerdings gibt es zwischen der Paketdatenbank von RPM und der systemeigenen Paketdatenbank keine Kommunikation, und somit werden doppelte Installationen genauso wenig aufgelöst wie fehlende Systemabhängigkeiten über die Paketsysteme hinweg.
| |
| | |
| Für [[OS/2]] bzw. [[EComStation|ecomstation]] wurde das System auch portiert,<ref>http://trac.netlabs.org/rpm</ref> so dass es sich inzwischen nicht mehr nur auf unixartige Betriebssysteme beschränkt.
| |
| | |
| == Aufbau ==
| |
| Die RPM-Dateien sind in der Regel mit [[gzip]] oder [[LZMA]]<ref name="XZ">{{Internetquelle | url=http://fedoraproject.org/wiki/Features/XZRpmPayloads | titel=XZ (LZMA) Payloads in RPM | autor=Poelstra | hrsg=[[Fedora-Projekt]] | datum=2009-08-19 | zugriff=2014-05-02 | sprache=englisch}}</ref> ([[xz]]) komprimierte [[cpio]]-Archive, die einzelnen Teile können jedoch einfach nach bestimmten Informationen durchsucht werden, denn ein [[Kopfdaten]]bereich im Binärformat ist an jedes Paket angefügt.
| |
| * Diese Kopfdaten sind nicht komprimiert und enthalten alle wichtigen Informationen.
| |
| * Das erleichtert das schnelle Durchsuchen von RPM-Paketen.
| |
| | |
| Entpacken ohne Installation ist möglich: <code>rpm2cpio foo.rpm | cpio -idmv</code>
| |
| | |
| == XML Package Metadata ==
| |
| In den RPM-Spezifikationen finden sich ebenfalls die Spezifikationen für Verzeichnisse mehrerer RPM-Pakete.
| |
| * Die Pakete werden dabei in einem Verzeichnis gespeichert, das neben den Paketen noch Informationen über die Pakete selbst in Form von Metadaten-Dateien enthält.
| |
| * Wenn ein geeignetes Programm dann Informationen über die im Verzeichnis enthaltene Software benötigt, reicht es, die Metadaten herunterzuladen.
| |
| * In diesen Daten sind die vorhandenen Pakete, deren Versionen, Abhängigkeiten, Architektur etc.
| |
| * enthalten.
| |
| | |
| Programme, die XML-Package-Metadaten verwalten können, sind yum, Yast, Red Carpet, smartpm und apt-rpm.
| |
| <!-- Gehört wohl er in Wikibook
| |
| | |
| == Nutzung von RPM ==
| |
| === Beispiele zur RPM-Benutzung ===
| |
| Die einfachste Möglichkeit der Anwendung ist die Installation eines Paketes.
| |
| * Beispiel:
| |
| rpm -i BEISPIEL-1.0-1.i386.rpm
| |
| Empfehlenswerter ist allerdings, die Option -U sowohl zum Aktualisieren ("update") sowie zur erstmaligen Installation zu verwenden:
| |
| rpm -U BEISPIEL
| |
| Allerdings sollte man die Option -i (statt -U) bei Kernel-Paketen verwenden! (http://docs.fedoraproject.org/deployment-guide/f12/en-US/html-single/#s2-rpm-installing)
| |
| | |
| Zur Deinstallation eines Paketes gibt man in der Konsole ein:
| |
| rpm -e BEISPIEL
| |
| Anzeigen aller im (bereits installierten) Paket enthaltenen Dateien:
| |
| rpm -ql BEISPIEL
| |
| Weiteres auf den [[Manpage]]s von rpm oder unter
| |
| rpm --help
| |
| Alle installierten Pakete (Liste mit Paketnamen) anzeigen
| |
| rpm -qa
| |
| Zuletzt installierte Pakete anzeigen
| |
| rpm -qa -last
| |
| Ermitteln, zu welchem Paket eine Datei gehört
| |
| rpm -qf <DATEINAME>
| |
| | |
| -->
| |
| | |
| == Programme, die RPM-Pakete verarbeiten ==
| |
| * rpm – ein [[Linux]]-Programm, das direkt über die Konsole aufrufbar ist.
| |
| * Konsolen-Frontends
| |
| ** [[urpm]] von [[Mandriva]] – damit werden bei der Installation automatisch die Abhängigkeiten aufgelöst.
| |
| ** up2date von Red Hat
| |
| ** [[Yellowdog Updater, Modified]] (Yum)
| |
| ** [[YaST]] von [[SuSE]] – enthält ein Modul zur Verwaltung von RPMs
| |
| ** [[Smart Package Manager]] – dieses Werkzeug greift auf bestehende Werkzeuge (rpm, dpkg, … ) zurück und kann so auf vielen Distributionen eine einheitliche Oberfläche bieten
| |
| ** [[DNF (Dandified Yum)|DNF]]
| |
| ** rpm-ostree – Tool aus Red Hats Container-Betriebssystem Atomic Host
| |
| * GUI-Frontends
| |
| ** KPackage ([[K Desktop Environment|KDE]])
| |
| ** gnorpm ([[Gnome]])
| |
| ** Yumex und KYum – zwei grafische Oberflächen für Yum (Gnome; KDE)
| |
| ** [[PackageKit]] – ein grafisches Programm, das sowohl auf der Basis von APT als auch auf Yum läuft.
| |
| ** anpm (ArcaNoaePackageManager) – Frontend für OS2 bzw.
| |
| * eComStation.<ref>https://www.arcanoae.com/resources/downloadables/</ref>
| |
| * Maintaining Tools
| |
| ** apt4rpm – eine Portierung von [[Advanced Packaging Tool|APT]] für das RPM-Format.
| |
| ** rpmlint
| |
| ** [[Alien (Programm)|alien]] – ein Programm, welches RPM-Pakete in [[Debian-Paket]]e für [[Debian]] (und auf dessen Paketverwaltung aufbauende Distributionen wie [[Ubuntu]]), und umgekehrt, konvertiert.
| |
| * Server / Repositories
| |
| ** [[RHN]]
| |
| ** [[Spacewalk (Software)|Spacewalk]] – rpm repository channel tool
| |
| ** [[openSUSE Build Service]]
| |
| ** [[Pulp (Software)|Pulp]] – rpm repository channel tool wie Spacewalk
| |
| | |
| == Betriebssysteme, die RPM nutzen ==
| |
| Linux-Distributionen:
| |
| * [[AlmaLinux]]
| |
| * [[CentOS]]
| |
| * [[Fedora (Linux-Distribution)|Fedora Project]]
| |
| * [[Mageia]]
| |
| * [[Mandriva Linux]] (nutzt einen Fork)
| |
| * [[MeeGo]]
| |
| * [[openSUSE]]
| |
| * [[Oracle Linux]]
| |
| * [[PCLinuxOS]]
| |
| * [[Red Hat Enterprise Linux]]
| |
| * [[Jolla#Sailfish OS|Sailfish OS]]
| |
| * [[Scientific Linux]]
| |
| * [[SUSE Linux Enterprise]] ([[SUSE Linux Enterprise Server]])
| |
| | |
| UNIX-Systeme:
| |
| * [[AIX]]
| |
| * [[Solaris (Betriebssystem)|Solaris]]
| |
| | |
| Andere:
| |
| * [[OS/2]] / [[eComStation]] / [[ArcaOS]]
| |
| * [[Netware]]
| |
| | |
| == Siehe auch ==
| |
| * [[dpkg]] und [[.deb]] – das System bei [[Debian]]
| |
| * [[Ebuild]] und [[emerge]] – die Wahl bei [[Gentoo Linux]]
| |
| * [[Arch Linux#Pacman|Pacman]] – Paketmanager von [[Arch Linux]]
| |
| | |
| == Weblinks ==
| |
| * [http://rpm.org/ Projektseite von rpm.org] (englisch)
| |
| * [http://rpm5.org/ Projektseite von rpm5.org] (englisch)
| |
| * [http://apt-rpm.org/ APT-RPM] (englisch)
| |
| * {{dmoz|Computers/Data_Formats/Archive/RPM/|RPM}}
| |
| * {{Webarchiv | url=http://www.xinux.de/docs/linux/rpm/ | wayback=20080225214130 | text=RPM E-Book}} von Thomas Schletter
| |
| | |
| {{SORTIERUNG:rpm}}
| |
| [[Kategorie:Linux:Software]]
| |