Centos rpm -qa vs yum list installé

Je veux avoir le server b pour avoir exactement la même configuration que le server a.

Mon plan est d'avoir une list de toutes les choses installées sur le server a et l'installer en utilisant la list sur le server b quelque chose comme:

yum -y install $(cat installed.txt) 

Dans le server a, devrais-je plutôt utiliser:

 rpm -qa > installed.txt 

ou:

 yum list installed > installed.txt 

? Les lists semblent être différentes et je n'ai aucune idée de pourquoi.

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

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

Ceci est probablement juste le formatting des différences. yum list fera un tas d'habillage intelligent à la taille de votre terminal.

Ce que vous voulez probablement faire est d'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 

Je ne sais pas exactement pourquoi les lists sont différentes, mais je sais que 'rpm -qa> installed.txt' est la bonne façon de find tous les packages installés. Il cherchera yum installé ainsi que le nombre de tours par minute installé.

De plus, le format de la sortie 'rpm -qa' fonctionnera mieux avec la command yum install que vous voulez exécuter.

Quelle pourrait être la différence?

La raison principale du nombre différent de lignes est que la sortie produite par yum est 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 listr ces packages et remplir la seconde ligne avec des espaces pour aligner correctement les champs. La sortie suivante (à partir d'une boîte ClearOS) montre que deux lignes sont utilisées pour listr le packageage device-mapper-persistent-data.x86_64 :

 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 on peut le voir en massant la sortie des deux commands avant de les comparer:

Pour la sortie de la command rpm :

  1. Triez-le de manière à ce que les packages commençant par une lettre majuscule apparaissent avant ceux qui ont un minuscule:

     rpm -qa | LC_ALL=C sort 
  2. Utilisez une command sed 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 command yum :

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

     Loaded plugins: etckeeper, fastestmirror Installed Packages 

    Nous pouvons utiliser sed pour ceci:

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

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

Maintenant, nous pouvons utiliser la command diff pour comparer la sortie des deux files. Voici la sortie d'une boîte Cent OS 6:

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

Cela montre que rpm -qa inclut également les lists de packages pour les keys publiques autorisées à signer les packages alors que la command yum omet ces packages.

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

 pam_krb5.i386 2.2.14-22.el5 installed 

Maintenant, rpm -qa a le dessous pour dire.

 pam_krb5-2.2.14-22.el5 

Les deux commands me donnent le même nombre de lignes que la sortie. Je voudrais aller avec la list rpm -qa .

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

il y a le programme "rpm", qui manipule spécifiquement les packages qu'il est demandé de manipuler, et il y a "yum", qui est un système de gestion plus intelligent qui peut find des dependencies et download des files .rpm même s'ils ne sont pas dans le système.

Donc, la différence pourrait être yum résout les dependencies mais rpm a installé toutes les dependencies et ainsi il fournit une list plus complète.

Je vois la différence réelle entre yum et rpm comme ci-dessous.

Le problème le plus important avec le rpm est un état communément appelé par la plupart des gens comme un enfer de dépendance . Ce problème se produit avec les packages qui dépendent de beaucoup d'autres packages, certains de ces packages dépendent également de beaucoup d'autres packages. Il est de notoriété publique que vous devez installer toutes les dependencies pour que le programme fonctionne correctement. rpm est incapable de faire automatiquement cela pour vous. Il ne peut vérifier que si tous les packages requirejs sont installés avant d'installer le package requirejs. Suivre et installer manuellement chaque dépendance est une corvée majeure pour la plupart des gens qui veulent seulement installer un seul package initialement.

yum est capable de suivre les dependencies d'un package et de les installer avant d'installer le package que l'user voulait installer. Cela simplifie l'set du process car il vous suffit de connaître le nom du package que vous souhaitez installer et de ne pas vous inquiéter si les packages requirejs ont été installés ou non. Les packages qui ne peuvent pas être trouvés sur le système sont recherchés dans les référentiels disponibles pour le système.

Les references

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

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