Wie erhalte ich den Namen eines älteren Pakets?

Wie erhalte ich den Namen eines älteren Pakets?

Ich habe einen RHEL und auf einem der Server habe ich dasselbe RPM-Paket in zwei verschiedenen Versionen installiert.

[root ~]# rpm -qa | grep my-package-name
my-package-name-6.6.2-129.x86_64
my-package-name-7.0.2-1.x86_64

Ich frage mich, ob es möglich ist, nur den älteren Paketnamen zu erhalten. Im Grunde möchte ich so etwas erreichen:

[root ~]# rpm -qa | grep my-package-name | get-the-oldest-package

Wie kann ich es tun?

Antwort1

Ich bin nicht ganz sicher, wie Sie es geschafft haben, zwei Versionen desselben Pakets zu installieren, aber so sollte es funktionieren:

rpm -q --queryformat "%{VERSION} %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" my-package-name | \
  sort -V | \
  awk 'NR==1 { print $2 }'

Die erste Zeile fragt die RPM-Datenbank nach my-package-name ab und fordert RPM auf, die Ergebnisse in einem bestimmten Format bereitzustellen – die VERSION, gefolgt von den Standardfeldern „rpm -qa“. Dies wird weitergeleitet, sort -Vum (zu versuchen), die Versionsnummern zu sortieren, gefolgt von einer Pipe, um awknur die erste Zeile auszudrucken und das zusätzliche VERSION-Feld zu entfernen, was zur rpm -qaStandardausgabe führt.

Dies setzt hoffentlich die sichere Annahme voraus, dass Sie dies auf einem RHEL-System ausführen, das über ein -VFlag zum Sortieren verfügt.

Antwort2

Ich bin immer paranoid, wenn ich mich auf Programme verlassen muss, die Versionszeichenfolgen interpretieren. Als Alternative zu Jeffs Lösung können Sie daher auch Folgendes tun:

[root@jb87-workstation ~]# rpm -q kernel --queryformat "%{INSTALLTIME} %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | sort -n | head -1 | awk '{print $NF}'
kernel-4.8.13-300.fc25.x86_64

(ersetzt kernelIhren Paketnamen)

Dadurch wird im Wesentlichen der vollständige Paketname gedruckt, indem Sie denselben rpm -qaBefehl ausführen und jeder Zeile einfach --queryformatden Unix-Zeitstempel der Installation voranstellen (der sich im %{INSTALLTIME}Tag befindet). Anschließend wird sort -ndie Ausgabe vom ältesten zum neuesten sortiert und nur die erste Ausgabezeile verwendet und die letzte Spalte gedruckt, die den vollständigen Paketnamen enthält.

Jeffs funktioniert jedoch einwandfrei. Es ist wahrscheinlich eher eine Frage der persönlichen Vorliebe.

Antwort3

Sie können yum downgrade package-name verwenden. Manchmal haben neue Pakete einen Fehler. Ich habe ein Downgrade auf das alte Paket durchgeführt.

verwandte Informationen