Liste différente des packages installés rapportés par rpm par rapport à yum

8

Je veux que le serveur B ait exactement la même configuration que le serveur A. Les serveurs A et B ont le même Arch et le même matériel.

Mon plan est d'avoir une liste de toutes les choses installées sur le serveur A et de l'installer en utilisant la liste sur le serveur B quelque chose comme:

yum -y install $(cat installed.txt)

Dans le serveur A, devrais-je plutôt utiliser:

rpm -qa > installed.txt

ou:

yum list installed > installed.txt  

Les listes semblent être différentes et je ne sais pas pourquoi.

yum list installedcompte 930 lignes et rpm -qa895 lignes, quelle pourrait être la différence?

John Smith
la source
Avez-vous diffédité les sorties (possible après tri)?
Anthon
Je n'ai aucune idée de la raison pour laquelle il y a une différence entre la sortie yum et la vitesse de rotation. Peut-être que vous devriez essayer la suggestion d'Anthon et nous faire savoir quel est le résultat. De plus, pour moi, les deux commandes listent le même nombre de lignes et selon votre plan, j'irais avec rpmlist car il a la liste qui peut être utilisée dans la yumcommande de votre serveur b .
Ramesh
mon pari: aussi à cause des packages installés par "rpm --install package.rpm"
Massimo

Réponses:

4

quelle pourrait être la différence?

La raison principale du nombre différent de lignes est que la sortie produite par yumest formatée de sorte que chaque champ s'aligne verticalement (quelle que soit la longueur du nom du package et / ou du numéro de version). Pour ce faire, il utilise deux lignes pour répertorier ces packages et remplit la deuxième ligne avec des espaces pour aligner correctement les champs. La sortie suivante (à partir d'une boîte CentOS 6) montre que deux lignes sont utilisées pour répertorier le device-mapper-persistent-data.x86_64package:

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

Cependant, ce n'est pas la seule raison et cela peut être vu en massant la sortie des deux commandes avant de les comparer:

Pour la sortie de la rpmcommande:

  1. Triez-le de sorte que les packages commençant par une lettre majuscule apparaissent avant ceux contenant une minuscule:

    rpm -qa | LC_ALL=C sort
    
  2. Utilisez une sedcommande pour supprimer les numéros de version du package:

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

Pour la sortie de la yumcommande:

  1. Supprimez les deux premières lignes d'en-tête ( Loaded pluginset Installed Packages):

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    Nous pouvons utiliser sedpour cela:

     yum list installed | sed '1,2d;'
    
  2. Nous pouvons également utiliser sedpour supprimer toutes les lignes qui sont des suites d'une liste de packages (ces lignes commencent par un certain nombre d'espaces afin que toutes les versions de packages s'alignent).

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

Maintenant, nous pouvons utiliser la diffcommande pour comparer la sortie des deux fichiers. Voici les résultats de la box CentOS 6:

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

Conclusion

Cela montre que rpm -qacomprend également des listes de packages pour les clés publiques qui sont approuvées pour signer des packages tandis que la yumcommande omet ces packages.

Anthony Geoghegan
la source
il y a quelque temps mais jamais trop tard pour beaucoup merci pour votre analyse et conclusion utiles !!
John Smith
@johnSmith Mieux vaut tard que jamais! :) Je me souviens d'avoir passé un peu de temps sur celui-ci mais j'ai pensé que c'était une question intéressante. Répondre à de telles questions peut être un bon moyen d'apprendre en soi.
Anthony Geoghegan
6

yum list installed a 930 lignes tandis que rpm -qa a 895 lignes, quelle pourrait être la différence?

Il s'agit probablement de différences de formatage. yum list fera un tas d'emballages intelligents à la taille de votre terminal.

Ce que vous voulez probablement faire, c'est utiliser:

# 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
la source
merci pour la réponse, après avoir installé yum-utils sur le nouveau serveur et exécuté "yum-debug-restore master_out.gz" il dit pour chaque paquet qu'il n'est pas disponible, est-ce que je manque quelque chose?
john Smith
S'ils ne sont pas des serveurs identiques (par exemple, un archivage différent ou le nouveau a des packages plus anciens), vous pouvez utiliser les options --ignore-arch et / ou --install-latest lors de la restauration.
James Antill
Je suggère de copier le contenu du master /etc/yum.repos.d/* sur le nouveau serveur avant d'exécuter yum-debug-restore
Sergey Vlasov
1

Je ne sais pas vraiment pourquoi les listes sont différentes, mais je sais que rpm -qa > installed.txtc'est la bonne façon de trouver tous les packages installés. Il cherchera yum installedaussi bien que rpm installed.

De plus, le format de rpm -qasortie fonctionnera mieux avec la yum installcommande que vous souhaitez exécuter.

Jeight
la source
0

yum list installed me donne la sortie comme ci-dessous.

pam_krb5.i386                        2.2.14-22.el5                     installed

Maintenant, rpm -qaa ce qui suit à dire.

pam_krb5-2.2.14-22.el5

Les deux commandes me donnent le même nombre de lignes en sortie. J'irais avec la rpm -qaliste.

De plus, à partir de cette réponse, je vois l'élément d'information ci-dessous.

il y a le programme, "rpm", qui manipule spécifiquement les paquets qu'il lui est demandé de manipuler, et il y a "yum", qui est un système de gestion plus intelligent qui peut trouver des dépendances et télécharger des fichiers .rpm même s'ils ne sont pas dans le système.

Ainsi, la différence peut être yumrésout les dépendances, mais rpma installé toutes les dépendances et fournit donc une liste plus complète.

Je vois la différence réelle entre yumet rpmcomme ci-dessous.

Le problème le plus important avec rpmest un état communément appelé par la plupart des gens l' enfer de la dépendance . Ce problème se produit avec les packages qui dépendent de nombreux autres packages, certains de ces packages dépendent également de nombreux autres packages. Il est de notoriété publique que vous devez installer toutes les dépendances pour que le programme fonctionne correctement. rpmn'est pas en mesure de le faire automatiquement pour vous. Il peut uniquement vérifier si tous les packages requis sont installés avant d'installer le package requis. Le suivi et l'installation manuels de chaque dépendance est une corvée majeure pour la plupart des personnes qui ne souhaitent installer qu'un seul package au départ.

yumest capable de suivre les dépendances d'un package et de les installer avant d'installer le package que l'utilisateur souhaitait installer. Cela simplifie l'ensemble du processus car vous n'avez besoin que de connaître le nom du package que vous souhaitez installer et ne vous inquiétez pas si les packages requis ont été installés ou non. Les packages introuvables sur le système sont recherchés dans les référentiels disponibles pour le système.

Références

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

Ramesh
la source
merci pour la réponse, pour moi la liste yum installée a 940 lignes tandis que rpm -qa a 895 lignes, une idée quelle pourrait être la différence?
john Smith
@johnSmith, Yumgère les dépendances et récupère les packages pour les remplir. Yumexécute efficacement la même commande que rpmmais inclut également tous les packages nécessaires pour faire correspondre les dépendances.
Ramesh
yumest une aubaine pour la gestion des dépendances de packages, mais cela n'a pas d'importance lorsqu'il s'agit simplement de répertorier les packages installés sur un système. Voir James et ma réponse pour la raison de la différence.
Anthony Geoghegan
0

yum list installed peut créer une sortie sur deux lignes, si le nom et la version du package sont longs.

Jan Gerrit Kootstra
la source
Cette réponse peut être courte mais elle est correcte (donc vote positif).
Anthony Geoghegan