Unterschiedliche Liste der installierten Pakete nach U / min im Vergleich zu yum

8

Ich möchte, dass Server B genau das gleiche Setup wie Server A hat. Server A und B haben den gleichen Bogen und die gleiche Hardware.

Mein Plan ist es, eine Liste aller auf Server A installierten Dinge zu haben und diese mithilfe der Liste auf Server B zu installieren.

yum -y install $(cat installed.txt)

Sollte ich in Server A lieber Folgendes verwenden:

rpm -qa > installed.txt

oder:

yum list installed > installed.txt  

Die Listen scheinen unterschiedlich zu sein und ich habe keine Ahnung warum.

yum list installedhat 930 Zeilen, während rpm -qa895 Zeilen, was könnte der Unterschied sein?

John Smith
quelle
Haben Sie diffdie Ausgaben bearbeitet (möglich nach dem Sortieren)?
Anthon
Ich habe keine Ahnung, warum es einen Unterschied zwischen Yum- und RPM-Ausgabe gibt. Vielleicht sollten Sie Anthons Vorschlag ausprobieren und uns wissen lassen, was die Ausgabe ist. Außerdem listen beide Befehle für mich die gleiche Anzahl von Zeilen auf, und gemäß Ihrem Plan würde ich mit rpmlist gehen, da sie die Liste enthält, die im yumBefehl Ihres Servers b verwendet werden kann .
Ramesh
Meine Wette: auch wegen der von "rpm --install package.rpm" installierten Pakete
Massimo

Antworten:

4

Was könnte der Unterschied sein?

Der Hauptgrund für die unterschiedliche Anzahl von Zeilen ist, dass die von erzeugte Ausgabe yumso formatiert ist, dass jedes Feld vertikal ausgerichtet ist (unabhängig von der Länge des Paketnamens und / oder der Versionsnummer). Dazu werden zwei Zeilen zum Auflisten solcher Pakete verwendet und die zweite Zeile mit Leerzeichen aufgefüllt, um die Felder korrekt auszurichten. Die folgende Ausgabe (aus einer CentOS 6-Box) zeigt, dass zwei Zeilen zum Auflisten des device-mapper-persistent-data.x86_64Pakets verwendet werden:

device-mapper-libs.x86_64         1.02.95-3.el6_7.4    @clearos-verified-updates
device-mapper-persistent-data.x86_64
                                  0.3.2-1.el6          @clearos
dhclient.x86_64                   12:4.1.1-49.P1.v6    @clearos-verified-updates

Dies ist jedoch nicht der einzige Grund und kann durch Massieren der Ausgabe der beiden Befehle vor dem Vergleich festgestellt werden:

Für die Ausgabe des rpmBefehls:

  1. Sortieren Sie es so, dass Pakete, die mit einem Großbuchstaben beginnen, vor Paketen mit Kleinbuchstaben angezeigt werden:

    rpm -qa | LC_ALL=C sort
    
  2. Verwenden Sie einen sedBefehl, um die Versionsnummern des Pakets zu entfernen:

    rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
    

Für die Ausgabe des yumBefehls:

  1. Entfernen Sie die ersten beiden Kopfzeilen ( Loaded pluginsund Installed Packages):

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    Wir können dafür verwenden sed:

     yum list installed | sed '1,2d;'
    
  2. Wir können auch sedalle Zeilen entfernen, die Fortsetzungen einer Paketliste sind (diese Zeilen beginnen mit einer Reihe von Leerzeichen, sodass alle Paketversionen ausgerichtet sind).

    yum list installed | sed '1,2d;/^ /d;s/\..*//' >| installed.yum
    

Jetzt können wir den diffBefehl verwenden, um die Ausgabe der beiden Dateien zu vergleichen. Hier sind die Ergebnisse der CentOS 6-Box:

# diff installed.{rpm,yum}
239,243d238
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey

Fazit

Dies zeigt, dass rpm -qaauch Paketlisten für die öffentlichen Schlüssel enthalten sind, denen das Signieren von Paketen vertraut wird, während der yumBefehl diese Pakete weglässt.

Anthony Geoghegan
quelle
Vor einiger Zeit, aber nie zu spät für viele, danke für Ihre hilfreiche Analyse und Schlussfolgerung!
John Smith
@johnSmith Besser spät als nie! :) Ich erinnere mich, dass ich ein bisschen Zeit damit verbracht habe, aber ich fand es eine interessante Frage. Die Beantwortung solcher Fragen kann eine gute Möglichkeit sein, an sich zu lernen.
Anthony Geoghegan
6

yum list installiert hat 930 Zeilen, während rpm -qa 895 Zeilen hat, was könnte der Unterschied sein?

Dies ist wahrscheinlich nur Formatierungsunterschiede. yum list wird eine Menge cleverer Verpackungen für Ihre Terminalgröße durchführen.

Was Sie wahrscheinlich tun möchten, ist zu verwenden:

# Run this on the master server
yum-debug-dump

# Run this on the new server, with the input from the above.
yum-debug-restore
James Antill
quelle
danke für die antwort, nachdem ich yum-utils auf dem neuen server installiert und "yum-debug-restore master_out.gz" ausgeführt habe, heißt es für jedes paket, dass es nicht verfügbar ist, fehlt mir etwas?
John Smith
Wenn es sich nicht um identische Server handelt (z. B. anderer Arch oder der neue hat ältere Pakete), können Sie beim Wiederherstellen die Optionen --ignore-arch und / oder --install-latest verwenden.
James Antill
Ich werde vorschlagen, den Inhalt des Masters /etc/yum.repos.d/* auf den neuen Server zu kopieren, bevor yum-debug-restore ausgeführt wird
Sergey Vlasov
1

Ich bin mir nicht ganz sicher, warum die Listen unterschiedlich sind, aber ich weiß, dass dies rpm -qa > installed.txtder richtige Weg ist, um alle installierten Pakete zu finden. Es wird yum installedgenauso gut suchen wie rpm installed.

Darüber hinaus rpm -qafunktioniert das Ausgabeformat besser mit dem yum installBefehl, den Sie ausführen möchten.

Jeight
quelle
0

yum list installed gibt mir die Ausgabe wie folgt.

pam_krb5.i386                        2.2.14-22.el5                     installed

Nun rpm -qahat das unten zu sagen.

pam_krb5-2.2.14-22.el5

Beide Befehle geben mir die gleiche Anzahl von Zeilen wie die Ausgabe. Ich würde mit rpm -qaListe gehen .

Aus dieser Antwort geht auch die folgende Information hervor.

Es gibt das Programm "rpm", das speziell die Pakete manipuliert, die bearbeitet werden sollen, und "yum", ein intelligenteres Managementsystem, das Abhängigkeiten finden und RPM-Dateien herunterladen kann, auch wenn sie nicht vorhanden sind das System.

Der Unterschied könnte also darin bestehen, yumdie Abhängigkeiten aufzulösen, aber rpmalle Abhängigkeiten installiert zu haben und eine vollständigere Liste bereitzustellen.

Ich sehe den tatsächlichen Unterschied zwischen yumund rpmwie unten.

Das auffälligste Problem rpmist ein Zustand, der von den meisten Menschen als Abhängigkeitshölle bezeichnet wird . Dieses Problem tritt bei Paketen auf, die von vielen anderen Paketen abhängen. Einige dieser Pakete hängen auch von vielen anderen Paketen ab. Es ist allgemein bekannt, dass Sie alle Abhängigkeiten installieren müssen, damit das Programm ordnungsgemäß funktioniert. rpmkann dies nicht automatisch für Sie tun. Es kann nur überprüft werden, ob alle erforderlichen Pakete installiert sind, bevor das erforderliche Paket installiert wird. Das manuelle Verfolgen und Installieren jeder Abhängigkeit ist für die meisten Benutzer, die zunächst nur ein einziges Paket installieren möchten, eine große Aufgabe.

yumist in der Lage, die Abhängigkeiten eines Pakets zu verfolgen und vor der Installation des Pakets zu installieren, das der Benutzer installieren wollte. Dies vereinfacht den gesamten Prozess, da Sie nur den Namen des Pakets kennen müssen, das Sie installieren möchten, und sich keine Sorgen machen müssen, ob die erforderlichen Pakete installiert wurden oder nicht. Pakete, die auf dem System nicht gefunden werden können, werden in den Repositorys gesucht, die dem System zur Verfügung stehen.

Verweise

http://www.differencebetween.net/technology/difference-between-yum-and-rpm/

Ramesh
quelle
danke für die antwort, für mich hat yum list 940 Zeilen installiert, während rpm -qa 895 Zeilen hat. Irgendeine Idee, was der Unterschied sein könnte?
John Smith
@johnSmith Yumbehandelt Abhängigkeiten und ruft Pakete ab, um sie zu füllen. Yumführt effektiv denselben Befehl aus wie rpm, enthält jedoch auch alle Pakete, die zum Abgleichen von Abhängigkeiten erforderlich sind.
Ramesh
yumist ein Glücksfall für die Verwaltung von Paketabhängigkeiten, aber das ist irrelevant, wenn nur die auf einem System installierten Pakete aufgelistet werden. Siehe James 'und meine Antwort für den Grund für den Unterschied.
Anthony Geoghegan
0

yum list installed kann eine zweizeilige Ausgabe erstellen, wenn der Paketname und die Paketversion lang sind.

Jan Gerrit Kootstra
quelle
Diese Antwort mag kurz sein, ist aber richtig (also positiv).
Anthony Geoghegan