|
|
Zeile 1: |
Zeile 1: |
| {{DISPLAYTITLE:rpm}}
| |
| '''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]]
| |
| # [[dpkg]] und [[.deb]] – das System bei [[Debian]]
| |
| # [[Ebuild]] und [[emerge]] – die Wahl bei [[Gentoo Linux]]
| |
| # [[Arch Linux#Pacman|Pacman]] – Paketmanager von [[Arch Linux]]
| |
|
| |
| == Links ==
| |
| === Projekt-Homepage ===
| |
| === 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
| |
|
| |
| === 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 =
| |
| == Geschichte ==
| |
| 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.
| |
|
| |
| [[Linux-Distribution]]en
| |
| * [[OpenSUSE|SUSE]]
| |
| * [[Mageia]]
| |
| * [[Mandriva Linux]]
| |
|
| |
| [[Unix]]-Systeme
| |
| * [[IBM]] [[AIX]]
| |
| * [[Solaris (Betriebssystem)|Solaris]]
| |
|
| |
| 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.
| |
|
| |
| == 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>
| |
|
| |
| -->
| |
|
| |
| == RPM-Programme ==
| |
| * 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 ==
| |
| === 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]]
| |
|
| |
| {{SORTIERUNG:rpm}}
| |
|
| |
| [[Kategorie:Linux:Software]]
| |
|
| |
|
| |
| = TMP =
| |
| === Der Redhat Package Manager ===
| |
| RPM (RPM Package Manager) wird für die Verwaltung von Softwarepaketen verwendet. Seine Hauptbefehle lauten '''rpm''' und '''rpmbuild'''. In der leistungsstarken RPM-Datenbank können Benutzer, Systemadministratoren und Paketersteller ausführliche Informationen zur installierten Software abfragen.
| |
|
| |
| Im Wesentlichen hat '''rpm''' fünf Modi: Installieren, Deinstallieren oder Aktualisieren von Software-Paketen; Neuaufbauen der RPM-Datenbank, Abfragen der RPM-Basis oder individuellen RPM-Archiven, Integritätsprüfung der Pakete und Signieren von Paketen. '''rpmbuild''' ermöglicht das Aufbauen installierbarer Pakete von Pristine-Quellen.
| |
|
| |
| Installierbare RPM-Archive sind in einem speziellen binären Format gepackt. Diese Archive bestehen aus den zu installierenden Programmdateien und aus verschiedenen Metadaten, die bei der Installation von '''rpm''' benutzt werden, um das jeweilige Softwarepaket zu konfigurieren, oder die zu Dokumentationszwecken in der RPM-Datenbank gespeichert werden. RPM-Archive haben für gewöhnlich die Dateinamenserweiterung <tt>.rpm</tt>.
| |
|
| |
| {|| class="wikitable sortable"
| |
| |-
| |
| || [[Image:Grafik16.png|top|alt="[Tip]"]]
| |
| || '''Pakete zur Software-Entwicklung'''
| |
| |-
| |
| | colspan="2" | Bei etlichen Paketen sind die zur Software-Entwicklung erforderlichen Komponenten (Bibliotheken, Header- und Include-Dateien usw.) in eigene Pakete ausgelagert. Diese Entwicklungspakete werden nur benötigt, wenn Sie Software selbst kompilieren möchten – beispielsweise die neuesten GNOME-Pakete. Solche Pakete sind am Namenszusatz <tt>-devel</tt> zu erkennen, z. B. die Pakete <tt>alsa-devel</tt>, <tt>gimp-devel</tt> und <tt>kdelibs3-devel</tt>.
| |
| |-
| |
| |}
| |
| ==== Graphische Frontends ====
| |
| Wer mit der Kommandozeile des rpm-Kommandos auf Kriegsfuß steht oder Probleme hat, sich die wichtigsten Optionen zu behalten, hat die Auswahl zwischen mehreren graphischen Frontends, die aber nicht alle Optionen von rpm abdecken.
| |
|
| |
| [[Image:Grafik6.png|right|top|alt="Bild:Rpm-frontends.png"]]# kpackage ist bei KDE dabei und unterstützt Drag & Drop, d. h. man kann ein heruntergeladenes Paket aus dem Datei-Manager heraus in kpackage hineinschieben und fallen lassen. Es versteht auch das Debian-Paketformat, das an der Endung .deb erkennbar ist.
| |
| # GnoRPM ist für Freunde des Gnome-Desktops.
| |
| # xrpm ist ein in Python geschriebenes Frontend, das einfach zu bedienen ist und alle wichtigen Funktionen enthält.
| |
| # <div >mc -- der Midnight Commander ist zwar kein graphisches RPM-Frontend, kann aber RPM-Archive lesen und anzeigen </div>
| |
|
| |
| ==== Prüfen der Authentizität ====
| |
| RPM-Pakete sind mit GnuPG signiert. Der Schlüssel mit dem "Fingerabdruck" lautet:
| |
|
| |
| <div >1024D/9C800ACA 2000-10-19 SuSE Package Signing Key <[mailto:build@suse.de build@suse.de]>
| |
| Key fingerprint = 79C1 79B2 E1C8 20C1 890F 9994 A84E DAE8 9C80 0ACA</div>
| |
|
| |
| Mit dem Befehl '''rpm --checksig '''<tt>paket</tt>'''-1.2.3.rpm''' können Sie die Signatur eines RPM-Pakets überprüfen und feststellen, ob es wirklich von SUSE oder einer anderen vertrauenswürdigen Quelle stammt. Dies ist insbesondere bei Update-Paketen aus dem Internet zu empfehlen. Der öffentliche Paketsignierschlüssel von SUSE ist standardmäßig in <tt>/root/.gnupg/</tt> hinterlegt. Der Schlüssel befindet sich zusätzlich im Verzeichnis <tt>/usr/lib/rpm/gnupg/</tt>, damit auch normale Benutzer die Signatur von RPM-Paketen prüfen können.
| |
|
| |
| ==== Pakete verwalten ====
| |
| In der Regel kann ein RPM-Archiv einfach installiert werden: '''rpm -i '''<tt>package</tt>'''.rpm'''. Mit diesem Befehl wird das Paket aber nur dann installiert, wenn seine Abhängigkeiten erfüllt sind und keine Konflikte mit anderen Paketen bestehen. '''rpm''' fordert per Fehlermeldung die Pakete an, die zum Erfüllen der Abhängigkeiten installiert werden müssen. Im Hintergrund stellt die RPM-Datenbank sicher, dass keine Konflikte entstehen: Jede spezifische Datei darf nur zu einem Paket gehören. Durch die Wahl anderer Optionen können Sie '''rpm''' zwingen, diese Standards zu ignorieren, jedoch ist dies nur für Spezialisten gedacht. Andernfalls wird damit die Integrität des Systems gefährdet und möglicherweise die Update-Fähigkeit aufs Spiel gesetzt.
| |
|
| |
| Die Optionen <tt>-U</tt> oder <tt>--upgrade</tt> und <tt>-F</tt> oder <tt>--freshen</tt> können für das Update eines Pakets benutzt werden, z. B.: '''rpm -F '''<tt>paket</tt>'''.rpm'''. Dieser Befehl entfernt die Dateien der alten Version und installiert sofort die neuen Dateien. Der Unterschied zwischen den beiden Versionen besteht darin, dass mit <tt>-U</tt> auch Pakete installiert werden, die vorher nicht im System vorhanden waren, wohingegen mit <tt>-F</tt> nur zuvor installierte Pakete aktualisiert werden. Bei einem Update verwendet '''rpm''' zur sorgfältigen Aktualisierung der Konfigurationsdateien die folgende Strategie:
| |
|
| |
| * Falls eine Konfigurationsdatei vom Systemadministrator nicht geändert wurde, installiert '''rpm''' die neue Version der entsprechenden Datei. Es sind keine Eingriffe seitens des Administrators nötig.
| |
| * Falls eine Konfigurationsdatei vom Systemadministrator vor dem Update geändert wurde, speichert '''rpm''' die geänderte Datei mit der Erweiterung <tt>.rpmorig</tt> oder <tt>.rpmsave</tt> (Sicherungsdatei) und installiert nur dann die Version aus dem neuen Paket, wenn sich die ursprünglich installierte Datei und die neue Version unterscheiden. Vergleichen Sie in diesem Fall die Sicherungsdatei (<tt>.rpmorig</tt> oder <tt>.rpmsave</tt>) mit der neu installierten Datei und nehmen Sie Ihre Änderungen erneut in der neuen Datei vor. Löschen Sie anschließend unbedingt alle <tt>.rpmorig</tt>- und <tt>.rpmsave</tt>-Dateien, um Probleme mit zukünftigen Updates zu vermeiden.
| |
| * <tt>.rpmnew</tt>-Dateien erscheinen immer dann, wenn die Konfigurationsdatei bereits existiert ''und'' wenn die Kennung <tt>noreplace</tt> mit der <tt>.spec</tt>-Datei angegeben wurde.
| |
|
| |
| Im Anschluss an ein Update sollten alle <tt>.rpmsave</tt>- und <tt>.rpmnew</tt>-Dateien nach einem Abgleich entfernt werden, damit sie bei zukünftigen Updates nicht stören. Die Erweiterung <tt>.rpmorig</tt> wird zugewiesen, wenn die Datei zuvor nicht von der RPM-Datenbank erkannt wurde.
| |
|
| |
| Andernfalls wird <tt>.rpmsave</tt> verwendet. Mit anderen Worten: <tt>.rpmorig</tt> entsteht bei einem Update von einem Fremdformat auf RPM. <tt>.rpmsave</tt> entsteht bei einem Update aus einem älteren RPM auf einen neueren RPM. <tt>.rpmnew</tt> informiert nicht darüber, ob der Systemadministrator die Konfigurationsdatei geändert hat. Eine Liste all dieser Dateien ist in <tt>/var/adm/rpmconfigcheck</tt> verfügbar. Einige Konfigurationsdateien (wie <tt>/etc/httpd/httpd.conf</tt>) werden nicht überschrieben, um den weiteren Betrieb zu ermöglichen.
| |
|
| |
| Der Schalter <tt>-U</tt> ist ''nicht'' einfach gleichbedeutend mit der Deinstallation mit der Option <tt>-e</tt> und der Installation mit der Option <tt>-i</tt>. Verwenden Sie <tt>-U</tt>, wann immer möglich.
| |
|
| |
| Geben Sie '''rpm -e '''<tt>paket</tt> ein, wenn Sie ein Paket entfernen möchten. '''rpm''' löscht das Paket nur, wenn keine nicht erfüllten Abhängigkeiten vorhanden sind. Theoretisch ist es unmöglich, beispielsweise Tcl/Tk zu löschen, solange eine andere Anwendung Tcl/Tk noch benötigt. Auch in diesem Fall nutzt RPM die Datenbank zur Unterstützung. Falls es in Ausnahmefällen nicht möglich ist, zu löschen, obwohl ''keine'' zusätzlichen Abhängigkeiten bestehen, können Sie versuchen, die RPM-Datenbank mit der Option <tt>--rebuilddb</tt> neu aufzubauen.
| |
|
| |
| ==== RPM und Patches ====
| |
| Um die Betriebssicherheit eines Systems zu garantieren, müssen von Zeit zu Zeit Update-Pakete auf dem System installiert werden. Bisher konnte ein Fehler in einem Paket nur eliminiert werden, indem das vollständige Paket ersetzt wurde. Bei großen Paketen mit Fehlern in kleinen Dateien kann dies schnell zu großen Datenmengen führen. Jedoch bietet SUSE RPM nun eine Funktion, mit der Patches in Pakete installiert werden können.
| |
|
| |
| Die wichtigsten Überlegungen dazu werden am Beispiel "pine" aufgezeigt:
| |
|
| |
| <div >Ist der Patch-RPM für mein System geeignet?</div>
| |
|
| |
| Um dies zu prüfen, fragen Sie zunächst die installierte Version des Pakets ab. Im Fall von pine verwenden Sie den Befehl:
| |
|
| |
| <div >rpm -q pine
| |
| pine-4.44-188</div>
| |
|
| |
| Prüfen Sie dann, ob der Patch-RPM sich für diese Version von pine eignet:
| |
|
| |
| <div >rpm -qp --basedon pine-4.44-224.i586.patch.rpm
| |
| pine = 4.44-188
| |
| pine = 4.44-195
| |
| pine = 4.44-207</div>
| |
|
| |
| Dieser Patch passt zu drei verschiedenen Versionen von pine. Auch die im Beispiel installierte Version wird aufgeführt, d. h. der Patch kann installiert werden.
| |
|
| |
| <div >Welche Dateien werden durch den Patch ersetzt?</div>
| |
|
| |
| Die durch einen Patch betroffenen Dateien können leicht im Patch-RPM abgelesen werden. Der '''rpm'''-Parameter <tt>-P</tt> ermöglicht die Auswahl von speziellen Patch-Funktionen. Zeigen Sie die Dateiliste mit dem folgenden Befehl an:
| |
|
| |
| <div >rpm -qpPl pine-4.44-224.i586.patch.rpm
| |
| /etc/pine.conf
| |
| /etc/pine.conf.fixed
| |
| /usr/bin/pine</div>
| |
|
| |
| Oder verwenden Sie, falls der Patch bereits installiert ist, den folgenden Befehl:
| |
|
| |
| <div >rpm -qPl pine
| |
| /etc/pine.conf
| |
| /etc/pine.conf.fixed
| |
| /usr/bin/pine</div>
| |
|
| |
| <div >Wie kann ein Patch-RPM im System installiert werden?</div>
| |
|
| |
| Patch-RPMs werden wie normale RPMs verwendet. Der einzige Unterschied liegt darin, dass ein passender RPM bereits installiert sein muss.
| |
|
| |
| <div >Welche Patches sind bereits auf dem System installiert und zu welchen Paketversionen gehören sie? </div>
| |
|
| |
| Eine Liste aller im System installierter Patches kann über den Befehl '''rpm '''<tt>-qPa</tt> angezeigt werden. Wenn nur ein Patch in einem neuen System installiert ist (wie in unserem Beispiel), sieht die Liste wie folgt aus:
| |
|
| |
| <div >rpm -qPa
| |
| pine-4.44-224</div>
| |
|
| |
| Wenn Sie zu einem späteren Zeitpunkt wissen möchten, welche Paketversion ursprünglich installiert war, können Sie auch diese Information der RPM-Datenbank entnehmen. Für '''pine''' rufen Sie diese Information mit dem folgenden Befehl ab:
| |
|
| |
| <div >rpm -q --basedon pine
| |
| pine = 4.44-188</div>
| |
|
| |
| Weitere Informationen, auch zur Patch-Funktion von RPM, stehen auf den man-Seiten von '''rpm''' und '''rpmbuild''' zur Verfügung.
| |
|
| |
| ==== Delta-RPM-Pakete ====
| |
| Delta-RPM-Pakete enthalten die Unterschiede zwischen einer alten und einer neuen Version eines RPM-Pakets. Wenn Sie ein Delta-RPM auf ein altes RPM anwenden, ergibt dies einen vollständig neuen RPM. Es ist nicht erforderlich, dass eine Kopie des alten RPM vorhanden ist, da ein Delta-RPM auch mit einem installierten RPM arbeiten kann. Die Delta-RPM-Pakete sind sogar kleiner als Patch-RPMs, was beim Übertragen von Update-Paketen über das Internet von Vorteil ist. Der Nachteil ist, dass Update-Vorgänge mit Delta-RPMs erheblich mehr CPU-Zyklen beanspruchen als normale oder Patch-RPMs.
| |
|
| |
| Die Binärdateien '''prepdeltarpm''', '''writedeltarpm''' und '''applydeltarpm''' sind Teil der Delta-RPM-Suite (Paket <tt>deltarpm</tt>) und helfen Ihnen beim Erstellen und Anwenden von Delta-RPM-Paketen. Mit den folgenden Befehlen erstellen Sie ein Delta-RPM mit dem Namen <tt>new.delta.rpm</tt>. Der folgende Befehl setzt voraus, dass <tt>old.rpm</tt> und <tt>new.rpm</tt> vorhanden sind:
| |
|
| |
| <div >prepdeltarpm -s seq -i info old.rpm > old.cpio
| |
| prepdeltarpm -f new.rpm > new.cpio
| |
| xdelta delta -0 old.cpio new.cpio delta
| |
| writedeltarpm new.rpm delta info new.delta.rpm</div>
| |
|
| |
| Entfernen Sie zum Schluss die temporären Arbeitsdateien <tt>old.cpio</tt>, <tt>new.cpio</tt> und <tt>delta</tt>.
| |
|
| |
| Mit '''applydeltarpm''' können Sie den neuen RPM aus dem Dateisystem rekonstruieren, wenn das alte Paket bereits installiert ist:
| |
|
| |
| <div >applydeltarpm new.delta.rpm new.rpm</div>
| |
|
| |
| Um es aus dem alten RPM abzuleiten, ohne auf das Dateisystem zuzugreifen, verwenden Sie die Option <tt>-r</tt>:
| |
|
| |
| <div >applydeltarpm -r old.rpm new.delta.rpm new.rpm</div>
| |
|
| |
| Technische Details finden Sie in <tt>/usr/share/doc/packages/deltarpm/README</tt>.
| |
|
| |
| ==== RPM Abfragen ====
| |
| Mit der Option <tt>-q</tt> initiiert '''rpm''' Abfragen und ermöglicht es, ein RPM-Archiv zu prüfen (durch Hinzufügen der Option <tt>-p</tt>) und auch die RPM-Datenbank nach installierten Paketen abzufragen. Zur Angabe der benötigten Informationsart stehen mehrere Schalter zur Verfügung. Weitere Informationen hierzu finden Sie unter [../quellen/manual/sec.rpm.anfragen.html#tab.rpm.query Tabelle 6.1, „Die wichtigsten RPM-Abfrageoptionen“].
| |
|
| |
| ; Die wichtigsten RPM-Abfrageoptionen
| |
|
| |
| {|| class="wikitable sortable"
| |
| |-
| |
| || <tt>-i</tt>
| |
| || Paketinformation
| |
| |-
| |
| || <tt>-l</tt>
| |
| || Dateiliste
| |
| |-
| |
| || <tt>-f FILE</tt>
| |
| || Abfrage nach Paket, das die Datei <tt>FILE</tt> enthält. (<tt>FILE</tt> muss mit dem vollständigen Pfad angegeben werden.)
| |
| |-
| |
| || <tt>-s</tt>
| |
| || Dateiliste mit Statusinformation (impliziert <tt>-l</tt>)
| |
| |-
| |
| || <tt>-d</tt>
| |
| || Nur Dokumentationsdateien auflisten (impliziert <tt>-l</tt>)
| |
| |-
| |
| || <tt>-c</tt>
| |
| || Nur Konfigurationsdateien auflisten (impliziert <tt>-l</tt>)
| |
| |-
| |
| || <tt>--dump</tt>
| |
| || Dateiliste mit vollständigen Details (mit <tt>-l</tt>, <tt>-c</tt> oder <tt>-d</tt> benutzen)
| |
| |-
| |
| || <tt>--provides</tt>
| |
| || Funktionen des Pakets auflisten, die ein anderes Paket mit <tt>--requires</tt> anfordern kann
| |
| |-
| |
| || <tt>--requires</tt>, <tt>-R</tt>
| |
| || Fähigkeiten, die das Paket benötigt
| |
| |-
| |
| || <tt>--Skripten</tt>
| |
| || Installationsskripten (preinstall, postinstall, uninstall)
| |
| |-
| |
| |}
| |
| Beispielsweise gibt der Befehl '''rpm -q -i wget''' die in [../quellen/manual/sec.rpm.anfragen.html#aus.update.rpm-i Beispiel „rpm -q -i wget“] gezeigte Information aus.
| |
|
| |
| ; Beispiel rpm -q -i wget
| |
|
| |
| <div >Name : wget Relocations: (not relocatable)
| |
| Version : 1.9.1 Vendor: SUSE LINUX AG, Nuernberg, Germany
| |
| Release : 50 Build Date: Sat 02 Oct 2004 03:49:13 AM CEST
| |
| Install date: Mon 11 Oct 2004 10:24:56 AM CEST Build Host: f53.suse.de
| |
| Group : Productivity/Networking/Web/Utilities Source RPM: wget-1.9.1-50.src.rpm
| |
| Size : 1637514 License: GPL
| |
| Signature : DSA/SHA1, Sat 02 Oct 2004 03:59:56 AM CEST, Key ID a84edae89c800aca
| |
| Packager : [http://www.suse.de/feedback http://www.suse.de/feedback]
| |
| URL : [http://wget.sunsite.dk/ http://wget.sunsite.dk/]
| |
| Summary : A tool for mirroring FTP and HTTP servers
| |
| Description :
| |
| Wget enables you to retrieve WWW documents or FTP files from a server.
| |
| This can be done in script files or via the command line.
| |
| [...]</div>
| |
|
| |
| Die Option <tt>-f</tt> funktioniert nur, wenn Sie den kompletten Dateinamen mit dem vollständigen Pfad angeben. Sie können so viele Dateinamen wie nötig angeben. Beispielsweise führt der folgende Befehl
| |
|
| |
| <div >rpm -q -f /bin/rpm /usr/bin/wget</div>
| |
|
| |
| zum Ergebnis:
| |
|
| |
| <div >rpm-4.1.1-191
| |
| wget-1.9.1-50</div>
| |
|
| |
| Wenn nur ein Teil des Dateinamens bekannt ist, verwenden Sie ein Shell-Skript, wie in [../quellen/manual/sec.rpm.anfragen.html#dat.rpm.search Beispiel 6.2, „Skript für die Suche nach Paketen“] gezeigt. Übergeben Sie den partiellen Dateinamen als Parameter beim Aufruf des Skripts.
| |
|
| |
| Beispiel 6.2. Skript für die Suche nach Paketen
| |
|
| |
| <div ><nowiki>#! /bin/sh</nowiki>
| |
| for i in $(rpm -q -a -l | grep $1); do
| |
| echo "\"$i\" is in package:"
| |
| rpm -q -f $i
| |
| echo ""
| |
| done</div>
| |
|
| |
| Der Befehl '''rpm -q --changelog rpm''' zeigt eine detaillierte Liste der Änderungsinformation zu einem bestimmten Paket nach Datum sortiert. Dieses Beispiel zeigt Informationen zum Paket <tt>rpm</tt>.
| |
|
| |
| Mithilfe der installierten RPM-Datenbank sind Überprüfungen möglich. Initiieren Sie die Überprüfungen mit <tt>-V</tt>, <tt>-y</tt> oder <tt>--verify</tt>. Mit dieser Option zeigt '''rpm''' alle Dateien in einem Paket an, die seit der Installation geändert wurden. '''rpm''' verwendet acht verschiedene Zeichen als Hinweis auf die folgenden Änderungen:
| |
|
| |
| ; RPM-Überprüfungsoptionen
| |
|
| |
| {|| class="wikitable sortable"
| |
| |-
| |
| || <tt>'''5'''</tt>
| |
| || MD5-Prüfsumme
| |
| |-
| |
| || <tt>'''S'''</tt>
| |
| || Dateigröße
| |
| |-
| |
| || <tt>'''L'''</tt>
| |
| || Symbolischer Link
| |
| |-
| |
| || <tt>'''T'''</tt>
| |
| || Änderungszeit
| |
| |-
| |
| || <tt>'''D'''</tt>
| |
| || Major- und Minor-Gerätenummern
| |
| |-
| |
| || <tt>'''U'''</tt>
| |
| || Eigentümer
| |
| |-
| |
| || <tt>'''G'''</tt>
| |
| || Gruppe
| |
| |-
| |
| || <tt>'''M'''</tt>
| |
| || Modus (Berechtigungen und Dateityp)
| |
| |-
| |
| |}
| |
| Bei Konfigurationsdateien wird der Buchstabe <tt>c</tt> ausgegeben. Beispielsweise für Änderungen an <tt>/etc/wgetrc</tt> (<tt>wget</tt>):
| |
|
| |
| <div >rpm -V wget
| |
| S.5....T c /etc/wgetrc</div>
| |
|
| |
| Die Dateien der RPM-Datenbank werden in <tt>/var/lib/rpm</tt> abgelegt. Wenn die Partition <tt>/usr</tt> eine Größe von 1 GB aufweist, kann diese Datenbank beinahe 30 MB belegen, insbesondere nach einem kompletten Update. Wenn die Datenbank viel größer ist als erwartet, kann es nützlich sein, die Datenbank mit der Option <tt>--rebuilddb</tt> neu zu erstellen. Legen Sie zuvor eine Sicherungskopie der alten Datenbank an. Das '''cron'''-Skript '''cron.daily''' legt täglich (mit gzip gepackte) Kopien der Datenbank an und speichert diese unter <tt>/var/adm/backup/rpmdb</tt>. Die Anzahl der Kopien wird durch die Variable <tt>MAX_RPMDB_BACKUPS</tt> (Standard: <tt>5</tt>) in <tt>/etc/sysconfig/backup</tt> gesteuert. Die Größe einer einzelnen Sicherungskopie beträgt ungefähr 1 MB für 1 GB in <tt>/usr</tt>.
| |
|
| |
| ==== Installieren von Quellpaketen ====
| |
| Alle Quellpakete haben die Erweiterung <tt>.src.rpm</tt> (Source-RPM).
| |
|
| |
| {|| class="wikitable sortable"
| |
| |-
| |
| || [[Image:Grafik17.png|top|alt="[Tip]"]]
| |
| || '''Tipp'''
| |
| |-
| |
| | colspan="2" | Quellpakete können vom Installationsmedium auf die Festplatte kopiert und mit YaST entpackt werden. Sie werden im Paket-Manager jedoch nicht als installiert (<tt>[i]</tt>) gekennzeichnet. Das liegt daran, dass die Quellpakete nicht in der RPM-Datenbank eingetragen sind. Nur ''installierte'' Betriebssystemsoftware wird in der RPM-Datenbank aufgeführt. Wenn Sie ein Quellpaket „installieren“, wird dem System nur der Quellcode hinzugefügt.
| |
| |-
| |
| |}
| |
| Die folgenden Verzeichnisse müssen für '''rpm''' und '''rpmbuild''' in <tt>/usr/src/packages</tt> vorhanden sein (es sei denn, Sie haben spezielle Einstellungen in einer Datei, wie <tt>/etc/rpmrc</tt>, festgelegt):
| |
|
| |
| {|| class="wikitable sortable"
| |
| |-
| |
| || <tt>'''SOURCES'''</tt>
| |
| || für die originalen Quellen (<tt>.tar.bz2</tt> oder <tt>.tar.gz</tt> files, etc.) und für die distributionsspezifischen Anpassungen (meistens <tt>.diff</tt>- oder <tt>.patch</tt>-Dateien)
| |
| |-
| |
| || <tt>'''SPECS'''</tt>
| |
| || für die ''.spec''-Dateien, die ähnlich wie Meta-Makefiles den ''build''-Prozess steuern
| |
| |-
| |
| || <tt>'''BUILD'''</tt>
| |
| || Alle Quellen in diesem Verzeichnis werden entpackt, gepatcht und kompiliert.
| |
| |-
| |
| || <tt>'''RPMS'''</tt>
| |
| || Speicherort der fertigen Binärpakete
| |
| |-
| |
| || <tt>'''SRPMS'''</tt>
| |
| || Speicherort der Quell-RPMs
| |
| |-
| |
| |}
| |
| Wenn Sie ein Quellpaket mit YaST installieren, werden alle notwendigen Komponenten in <tt>/usr/src/packages</tt> installiert: die Quellen und Anpassungen in <tt>SOURCES</tt> und die relevanten <tt>.spec</tt>-Dateien in <tt>SPECS</tt>.
| |
|
| |
| {|| class="wikitable sortable"
| |
| |-
| |
| || [[Image:Grafik18.png|top|alt="[Warning]"]]
| |
| || '''Warnung'''
| |
| |-
| |
| | colspan="2" | Experimentieren Sie nicht mit Systemkomponenten (<tt>glibc</tt>, <tt>rpm</tt>, <tt>sysvinit</tt> usw.), da Sie damit die Funktionstüchtigkeit Ihres Systems aufs Spiel setzen.
| |
| |-
| |
| |}
| |
| Das folgende Beispiel verwendet das <tt>wget.src.rpm</tt>-Paket. Nach dem Installieren des Pakets mit YaST sollten Sie über Dateien ähnlich der in folgender Liste verfügen:
| |
|
| |
| <div >/usr/src/packages/SOURCES/nops_doc.diff
| |
| /usr/src/packages/SOURCES/toplev_destdir.diff
| |
| /usr/src/packages/SOURCES/wget-1.9.1+ipvmisc.patch
| |
| /usr/src/packages/SOURCES/wget-1.9.1-brokentime.patch
| |
| /usr/src/packages/SOURCES/wget-1.9.1-passive_ftp.diff
| |
| /usr/src/packages/SOURCES/wget-LFS-20040909.tar.bz2
| |
| /usr/src/packages/SOURCES/wget-wrong_charset.patch
| |
| /usr/src/packages/SPECS/wget.spec</div>
| |
|
| |
| Mit '''rpmbuild -b '''<tt>X</tt>''' /usr/src/packages/SPECS/wget.spec''' wird die Kompilierung gestartet. <tt>X</tt> ist ein Platzhalter für verschiedene Stufen des build-Prozesses (Einzelheiten siehe in <tt>--help</tt> oder der RPM-Dokumentation). Nachfolgend wird nur eine kurze Erläuterung gegeben:
| |
|
| |
| {|| class="wikitable sortable"
| |
| |-
| |
| || <tt>'''-bp'''</tt>
| |
| || Bereiten Sie Quellen in <tt>/usr/src/packages/BUILD</tt> vor: entpacken und patchen.
| |
| |-
| |
| || <tt>'''-bc'''</tt>
| |
| || Wie <tt>-bp</tt>, jedoch zusätzlich kompilieren.
| |
| |-
| |
| || <tt>'''-bi'''</tt>
| |
| || Wie <tt>-bp</tt>, jedoch zusätzlich die erstellte Software installieren. Vorsicht: Wenn das Paket die Funktion BuildRoot nicht unterstützt, ist es möglich, dass Konfigurationsdateien überschrieben werden.
| |
| |-
| |
| || <tt>'''-bb'''</tt>
| |
| || Wie <tt>-bi</tt>, jedoch zusätzlich das Binärpaket erstellen. Nach erfolgreicher Kompilierung sollte das Binärpaket in <tt>/usr/src/packages/RPMS</tt> sein.
| |
| |-
| |
| || <tt>'''-ba'''</tt>
| |
| || Wie <tt>-bb</tt>, jedoch zusätzlich den Quell-RPM erstellen. Nach erfolgreicher Kompilierung sollte dieses in <tt>/usr/src/packages/RPMS</tt> liegen.
| |
| |-
| |
| || <tt>'''--short-circuit'''</tt>
| |
| || Einige Schritte überspringen.
| |
| |-
| |
| |}
| |
| Der erstellte Binär-RPM kann nun mit '''rpm '''<tt>-i</tt> oder vorzugsweise mit '''rpm '''<tt>-U</tt> erstellt werden. Durch die Installation mit '''rpm''' wird er in die RPM-Datenbank aufgenommen.
| |
|
| |
| ==== Kompilieren von RPM-Pakten ====
| |
| Bei vielen Paketen besteht die Gefahr, dass während der Erstellung ungewollt Dateien in das laufende System kopiert werden. Um dies zu vermeiden, können Sie <tt>build</tt> verwenden, das eine definierte Umgebung herstellt, in der das Paket erstellt wird. Zum Aufbau dieser chroot-Umgebung muss dem '''build'''-Skript ein kompletter Paketbaum zur Verfügung stehen. Dieser kann auf Festplatte, über NFS oder auch von DVD bereitgestellt werden. Legen Sie die Position mit '''build --rpms '''<tt>Verzeichnis</tt> fest. Im Unterschied zu '''rpm''' sucht der Befehl '''build''' die SPEC-Datei im Quellverzeichnis. Wenn Sie, wie im obigen Beispiel, wget neu erstellen möchten und die DVD unter <tt>/media/dvd</tt> im System eingehängt ist, verwenden Sie als Benutzer <tt>root</tt> folgende Befehle:
| |
|
| |
| <div >cd /usr/src/packages/SOURCES/
| |
| mv ../SPECS/wget.spec .
| |
| build --rpms /media/dvd/suse/ wget.spec</div>
| |
|
| |
| Anschließend wird in <tt>/var/tmp/build-root</tt> eine minimale Umgebung eingerichtet. Das Paket wird in dieser Umgebung erstellt. Danach befinden sich die resultierenden Pakete in <tt>/var/tmp/build-root/usr/src/packages/RPMS</tt>.
| |
|
| |
| Das '''build'''-Skript bietet eine Reihe zusätzlicher Optionen. Beispielsweise können Sie das Skript veranlassen, Ihre eigenen RPMs bevorzugt zu verwenden, die Initialisierung der build-Umgebung auszulassen oder den Befehl '''rpm''' auf eine der oben erwähnten Stufen zu beschränken. Weitere Informationen erhalten Sie über '''build '''<tt>--help</tt> oder die Manualpage '''build'''.
| |
|
| |
| ==== Werkzeuge ====
| |
| Midnight Commander ('''mc''') kann den Inhalt von RPM-Archiven anzeigen und Teile daraus kopieren. Archive werden als virtuelle Dateisysteme dargestellt und bieten alle üblichen Menüoptionen von Midnight Commander. Zeigen Sie den <tt>HEADER</tt> mit F3 an. Zeigen Sie die Archivstruktur mit den Cursortasten und der Eingabetaste an. Kopieren Sie Archivkomponenten mit F5.
| |
|
| |
| KDE bietet das Werkzeug kpackage als Front-End für '''rpm''' an. Ein Paket-Manager mit allen Funktionen ist als YaST-Modul verfügbar (siehe Kapitel Installieren bzw. Entfernen von Software (↑Start)).
| |