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
:
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
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
:
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;'
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.