4.4.6. Aktualisierungen am RPM Package Manager (RPM)
Red Hat Enterprise Linux 7 enthält eine aktualisierte Version des RPM Package Managers. Diese Aktualisierung bringt eine Reihe von Änderungen mit sich, die sich auf die Migration auswirken können.
- Die Konflikterkennung ist nun strenger und korrekter. Einige Pakete, die unter Red Hat Enterprise Linux 6 installiert werden konnten, können aufgrund dieser erhöhten Konflikterkennung möglicherweise nicht unter Red Hat Enterprise Linux 7 installiert werden.
- Pakete, dessen verschiedene Versionen miteinander im Konflikt stehen, können nun installiert werden. Dies ermöglicht es Benutzern, ein Singleton-Verhalten zwischen diesen Alternativen zu konfigurieren.
- Falls ein installiertes Paket ein anderes Paket als obsolet auflistet, dann wird dieses andere Paket nicht installiert.
- Die Regeln zur Erkennung von veralteten Paketen ziehen nun alle passenden Pakete in Betracht, unabhängig von anderen Attributen wie z.B. der Architektur.
- Die Berechnung von Abhängigkeiten betrachtet solche Dateien nicht länger als vorhanden, die ersetzt oder nicht installiert wurden, weil zum Beispiel die Optionen
--nodocs
,--noconfig
oder--force
verwendet wurden. - Es ist nicht mehr nötig, manuell
rm -f /var/lib/rpm/__db.
auszuführen, wenn eine RPM Package Manager Datenbank neu erstellt wird, auf der eine Panik auftrat (DB_RUNRECOVER
). - Öffentliche Schlüssel, die mit OpenPGP 3 erstellt wurden, werden nicht mehr unterstützt.
- Die
--info
Option gibt nun einzelne Schlüssel-Wert-Paare pro Zeile aus, um die Lesbarkeit zu verbessern. Skripte, die auf dem früheren--info
Format basieren, müssen umgeschrieben werden. - Der Spec-Parser ist nun strenger und korrekter, weshalb einige bislang akzeptierte Spec-Dateien unter Umständen nicht mehr analysiert werden können oder Warnungen generieren.
%license
kann nun dazu verwendet werden, um Dateien im%files
Abschnitt einer Spec-Datei zu kennzeichnen, die installiert werden müssen, selbst wenn--nodocs
angegeben ist.- Der Versionsvergleich unterstützt nun wie dpkg den Tilde-Operator (
~
), um Pre-Release-Software besser zu handhaben. Beispielsweise giltfoo-2.0~beta1
als älter alsfoo-2.0
. Auf diese Weise sind keine Tricks mehr mit dem Release-Feld erforderlich, um diese üblichen Upstream-Versionierungspraktiken zu handhaben. - Der automatische Abhängigkeitsgenerator wurde neu geschrieben als erweiterbares, anpassbares und regelbasiertes System mit integrierter Filterung.
Diese Aktualisierung umfasst zudem die folgenden Verbesserungen:
- Es ist nun möglich abzufragen, welche Dateien von einem Paket installiert wurden (
INSTFILENAMES
), wie viele Hard-Links auf eine Datei verweisen (FILENLINKS
), sowie Details des Paket-Versionskontrollsystems (VCS
) und formatierte Shortcuts von Abhängigkeitsstrings (PROVIDENEVRS
,REQUIRENEVRS
,CONFLICTNEVRS
,OBSOLETENEVRS
). - Eine Reihe neuer Befehle sind enthalten, unter anderem:
rpmkeys
rpmdb
rpmspec
rpmsign
- RPM Package Manager enthält nun neue Switches für Skriptlets, die Makroerweiterung zur Laufzeit und Queryformat-Erweiterung zur Laufzeit ermöglichen.
- Prä- und Posttransaktions-Skriptlet-Abhängigkeiten können nun korrekt mit
Requires(pretrans)
undRequires(posttrans)
ausgedrückt werden. - RPM Package Manager enthält nun den
OrderWithRequires
Tag, der Benutzern die Angabe zusätzlicher Informationen zur Reihenfolge ermöglicht. Dieser neue Tag verwendet dieselbe Syntax wie der Requires-Tag, generiert jedoch keine Abhängigkeiten. Falls genannte Pakete in derselben Transaktion vorhanden sind, werden die Hinweise zur Reihenfolge bei der Berechnung der Transaktionsreihenfolge wieRequires
gehandhabt. - Zeilenfortsetzungen und Makroerweiterungen in Spec-Dateien sind nicht mehr auf eine bestimmte Länge beschränkt.
- RPM Package Manager ermöglicht es Benutzern nun, Informationen zum Upstream-Versionskontroll-Repository anzugeben.
- RPM Package Manager enthält nun ein
%autosetup
Makro, das dabei hilft, das Anwenden von Patches zu automatisieren.