Wie erhält man die Reihenfolge, in der RPM eine Reihe neuer Pakete installiert?

Wie erhält man die Reihenfolge, in der RPM eine Reihe neuer Pakete installiert?

Ich habe eine Reihe von RPM-Paketen. Ich werde sie alle auf einmal installieren, aber vorher möchte ich die Reihenfolge kennen, in der sie installiert werden. Ich weiß, wenn ich sie alle in zufälliger Reihenfolge dem Paketmanager zur Verfügung stelle, wird der Manager die Abhängigkeiten zwischen ihnen feststellen und sie in der richtigen Reihenfolge installieren. Wie erhalte ich diese Reihenfolge?

Antwort1

Sie können die Debug-Ausgabe von rpm mit der Option --test verwenden. Das bedeutet, dass keine Pakete installiert werden, aber die stderr-Ausgabe enthält die interne Reihenfolge, wie folgt:

D: ========== tsorting packages (order, #predecessors, #succesors, depth)
D:     0    0    2    1   +cla-v1-r45.0.0.x86_64
D:     1    0   11    2   +ace-6.5.15-1.x86_64
D:     2    0    1    3       +ace-kokyu-6.5.15-1.x86_64
D:     3    0    1    3       +ace-xml-6.5.15-1.x86_64
D:     4    0    7    4       +tao-2.5.15-1.x86_64
D:     5    0    0    5       +tao-cosconcurrency-2.5.15-1.x86_64
D:     6    0    0    5       +tao-cosevent-2.5.15-1.x86_64
D:     7    0    0    5       +tao-cosnaming-2.5.15-1.x86_64
D:     8    0    0    5       +tao-cosnotification-2.5.15-1.x86_64
D:     9    0    0    5       +tao-costrading-2.5.15-1.x86_64
D:    10    0    0    5       +tao-rtevent-2.5.15-1.x86_64
D:    11    0    0    5       +tao-utils-2.5.15-1.x86_64
D:    12    0    0    3     +ace-gperf-6.5.15-1.x86_64
D:    13    0    0    1   +mpc-6.5.15-1.x86_64
D:    14    0    0    1   +PCMX-6.0A90-02.x86_64
D: installing binary packages

Verwenden Sie dann einen Filter zum Parsen, z. B. awk

rpm -Uvv --test *.rpm 2>&1 | awk 'BEGIN { FS = "+" }; /D: ========== tsorting packages/,/D: installing binary packages/ { printf "%s ",$2 }'

Antwort2

yumhat keine Möglichkeit, diese Bestellung auszudrucken (sieheHandbuch), noch gibt es eine bekannte Schnittstelle zu seiner Datenbank und Bibliotheken, die dies tun kann. Eine Lösung müsste also seindraußen yum. Sie können jederzeit yumeine vollständige Liste der zusätzlichen Abhängigkeiten eines Pakets ausdrucken lassen, aber diese Informationen sind nicht sehr nützlich, um dieBefehlin denen Pakete installiert werden müssen. Einfacher ist es, nachzufragen rpm.

Im Prinzip kann man ein Skript schreiben, das die Ausgabe von

rpm -qpR package-file

für jedePaketdatei, um die Abhängigkeiten abzurufen und sie in Schritte zu ordnen, z. B.

  • Pakete, die von keinem der anderen abhängig sind, dann
  • Pakete, die von einem oder mehreren der vorhergehenden (und möglicherweise anderen inDasGruppe) und
  • so weiter, bis keine Pakete mehr übrig sind

(Ich habe es umgekehrt gemacht - ich habe nach Paketen gesucht, umentfernen, und es ist kompliziert, aber machbar).

verwandte Informationen