rpm: Wodurch wird bestimmt, ob ein Paket ein vorhandenes aktualisiert oder zusätzlich installiert wird?

rpm: Wodurch wird bestimmt, ob ein Paket ein vorhandenes aktualisiert oder zusätzlich installiert wird?

Ist es einfach der Installationspfad? Wenn das der Fall ist, wird kein Paket, das eine Version im Namen/Pfad hat, ein anderes aktualisieren, also kann es das nicht sein. Ich sehe in den Abhängigkeitsinformationen im Handbuch keine Erwähnung davon. Wie sage ich cAPI-3.1.6-x86_64.rpm beim Erstellen eines RPM, dass es cAPI-2.1.7-x86_64.rpm aktualisieren soll, wenn ich es installiere, und nicht einen neuen Pfad unter /usr/lib erstellen und das vorhandene Paket ignorieren soll?

Antwort1

Generelle Zustimmung@msuchydass das relevante Merkmal die Kombination von PaketNameUnddie Architektur, es hilft, einen Überblick zu geben.

Der Ort, an dem man nach Informationen suchen sollte, ist nicht "Upgrade", sondernInstallieren mehrerer Versioneneines Pakets:

Mehrere installierte Versionen(auf rpm.org) gibt einen guten Überblick:

Alle Paketverwaltungstools verwenden bestimmte Schlüssel, um auf Pakete/Programme zu verweisen. Normalerweise ist dieser Schlüssel package Name oder Paket Name und Paket Bogen

Das heißt, es gibt (normalerweise) zwei Möglichkeiten: Paketname allein oder Paketname in Kombination mit Architektur. Weiter heißt es

Kernel-Pakete werden speziell so erstellt, dass sie keine widersprüchlichen Dateien von einer Version des Kernels zur nächsten enthalten

Das heißt, Kernel werden speziell behandelt, weil (den Paketentwicklern) bekannt ist, dass alle Dateien in einem Linux-Kernel-Paket unterschiedliche Namen haben (entweder ist die Version in den Dateinamen eingebettet oder die Dateien befinden sich in Verzeichnissen mit eingebetteter Version). Das ist ein Sonderfall. Zu viele Sonderfälle machen den RPM-Betreuern Arbeit.

Anschließend wird gezeigt, wie Pakete für Programme mit langfristig stabilen Versionen unter Verwendung dieser Versionsnummern als Teil des Pakets erstellt werden.Name, wodurch mehrere Versionen des Programms auf derselben Maschine installiert werden können. Das angegebene Beispiel ist für Python. Andere Programme, die möglicherweise dasselbe Schema verwenden, sind Apache, Autoconf, GCC und Java. Hier sind einige Beispiele von Fedora22:

SDL2-2.0.3-5.fc22.x86_64
openjpeg2-2.1.0-6.fc22.x86_64
pygobject2-2.28.6-13.fc22.x86_64
pygobject3-3.16.2-1.fc22.x86_64
pygobject3-base-3.16.2-1.fc22.x86_64
python3-3.4.2-6.fc22.x86_64
qt5-qtbase-5.5.0-15.fc22.x86_64
vte291-0.40.2-1.fc22.x86_64
vte3-0.36.4-1.fc22.x86_64
webkitgtk3-2.4.9-1.fc22.x86_64
webkitgtk4-2.8.5-2.fc22.x86_64

Wenn Sie diese Pakete sehen, können Sie leicht verwirrt werden, welche Nummern Teil des Paketnamens sind und welche dieAusführungUndfreigeben. RPM verwendet Bindestriche ( -), um diese zu trennen: Wenn kein Bindestrich vorhanden ist, ist die Nummer Teil des Namens.

Antwort2

Es kommt auf die %{name}.%{arch}Kombination an. Wenn diese gleich ist, handelt es sich um ein Upgrade. Wenn sie sich unterscheidet, handelt es sich um eine weitere Installation.

D. h., Sie können cAPI-3.1.6-x86_64und cAPI-3.1.6-i386gleichzeitig installiert haben. Aber Sie können nicht cAPI-3.1.6-x86_64und cAPI-2.1.7-x86_64auf einem System haben (es sei denn, Sie wenden wirklich schmutzige Tricks an).

verwandte Informationen