Elenco diverso di pacchetti installati riportato da rpm rispetto a yum


8

Voglio che il server B abbia esattamente la stessa configurazione del server A. I server A e B hanno lo stesso arco e lo stesso hardware.

Il mio piano è di avere un elenco di tutte le cose installate sul Server A e installarlo usando l'elenco sul Server B in qualche modo:

yum -y install $(cat installed.txt)

Nel server A, dovrei piuttosto usare:

rpm -qa > installed.txt

o:

yum list installed > installed.txt  

Le liste sembrano essere diverse e non ho idea del perché.

yum list installedha 930 linee mentre rpm -qaha 895 linee, quale potrebbe essere la differenza?


Hai modificato diffle uscite (possibile dopo l'ordinamento)?
Anthon,

Non ho idea del perché ci sia una differenza tra l'uscita yum e quella rpm. Forse dovresti provare il suggerimento di Anthon e farci sapere qual è l'output. Inoltre, per me entrambi i comandi elencano lo stesso numero di righe e secondo il tuo piano, andrei con la rpmlista poiché ha la lista che può essere usata nel yumcomando del tuo server b .
Ramesh,

la mia scommessa: anche a causa dei pacchetti installati da "rpm --install package.rpm"
Massimo

Risposte:


4

quale potrebbe essere la differenza?

Il motivo principale del diverso numero di righe è che l'output prodotto da yumè formattato in modo tale che ciascun campo sia allineato verticalmente (indipendentemente dalla lunghezza del nome del pacchetto e / o del numero di versione). Lo fa usando due righe per elencare tali pacchetti e riempire la seconda riga di caratteri spaziali per allineare correttamente i campi. Il seguente output (da una scatola di CentOS 6) mostra che vengono utilizzate due righe per elencare il device-mapper-persistent-data.x86_64pacchetto:

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

Tuttavia, questo non è l' unico motivo e può essere visto massaggiando l'output dei due comandi prima di confrontarli:

Per l'output del rpmcomando:

  1. Ordina in modo che i pacchetti che iniziano con una lettera maiuscola compaiano prima di quelli con lettere minuscole:

    rpm -qa | LC_ALL=C sort
    
  2. Utilizzare un sedcomando per rimuovere i numeri di versione del pacchetto:

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

Per l'output del yumcomando:

  1. Rimuovi le prime due righe di intestazione ( Loaded pluginse Installed Packages):

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    Possiamo usare sedper questo:

     yum list installed | sed '1,2d;'
    
  2. Possiamo anche usare sedper rimuovere tutte le linee che sono le continuazioni di un elenco di pacchetti (queste linee iniziano con un numero di spazi in modo che tutte le versioni del pacchetto siano allineate).

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

Ora, possiamo usare il diffcomando per confrontare l'output dei due file. Ecco i risultati dalla confezione di CentOS 6:

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

Conclusione

Ciò mostra che rpm -qainclude anche elenchi di pacchetti per le chiavi pubbliche ritenute affidabili per firmare i pacchetti mentre il yumcomando omette questi pacchetti.


qualche tempo fa ma mai troppo tardi per molte grazie per la tua utile analisi e conclusione !!
John Smith,

@johnSmith Meglio tardi che mai! :) Ricordo di aver trascorso un po 'di tempo su questo, ma ho pensato che fosse una domanda interessante. Rispondere a tali domande può essere un buon modo di apprendere in sé.
Anthony Geoghegan,

6

la lista yum installata ha 930 righe mentre rpm -qa ha 895 righe, quale potrebbe essere la differenza?

Questo è probabilmente solo differenze di formattazione. la lista yum farà un mucchio di avvolgimenti intelligenti per le dimensioni del tuo terminale.

Quello che probabilmente vuoi fare è usare:

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

# Run this on the new server, with the input from the above.
yum-debug-restore

grazie per la risposta, dopo aver installato yum-utils sul nuovo server ed eseguito "yum-debug-restore master_out.gz", dice per ogni pacchetto che non è disponibile, mi sto perdendo qualcosa?
John Smith,

Se non sono server identici (ad es. Arco diverso o il nuovo ha pacchetti più vecchi) è possibile utilizzare le opzioni --ignore-arch e / o --install-latest al ripristino.
James Antill,

Suggerirò di copiare il contenuto del master /etc/yum.repos.d/* sul nuovo server prima di eseguire yum-debug-restore
Sergey Vlasov,

1

Non sono del tutto sicuro del perché le liste siano diverse, ma so che rpm -qa > installed.txtè il modo corretto di trovare tutti i pacchetti installati. Cercherà yum installedanche rpm installed.

Inoltre, il formato rpm -qadell'output funzionerà meglio con il yum installcomando che si desidera eseguire.


0

yum list installed mi dà l'output come di seguito.

pam_krb5.i386                        2.2.14-22.el5                     installed

Ora, rpm -qaha il seguente da dire.

pam_krb5-2.2.14-22.el5

Entrambi i comandi mi danno lo stesso numero di righe dell'output. Vorrei andare con la rpm -qalista.

Inoltre, da questa risposta, vedo l'informazione di seguito.

c'è il programma "rpm", che manipola in modo specifico i pacchetti che deve manipolare, e c'è "yum", che è un sistema di gestione più intelligente che può trovare dipendenze e scaricare file .rpm anche se non sono in il sistema.

Quindi la differenza potrebbe essere yumrisolve le dipendenze ma rpmha installato tutte le dipendenze e quindi fornisce un elenco più completo.

Vedo la differenza effettiva tra yume rpmcome di seguito.

Il problema più rilevante con rpmè uno stato comunemente indicato dalla maggior parte delle persone come inferno di dipendenza . Questo problema si verifica con pacchetti che dipendono da molti altri pacchetti, alcuni di questi pacchetti dipendono anche da molti altri pacchetti. È risaputo che è necessario installare tutte le dipendenze affinché il programma funzioni correttamente. rpmnon è in grado di farlo automaticamente per te. Può solo verificare se tutti i pacchetti richiesti sono installati prima di installare il pacchetto necessario. Tracciare e installare manualmente ogni dipendenza è un compito importante per la maggior parte delle persone che desiderano installare inizialmente un solo pacchetto.

yumè in grado di tracciare le dipendenze di un pacchetto e installarle prima di installare il pacchetto che l'utente voleva installare. Ciò semplifica l'intero processo in quanto è necessario conoscere solo il nome del pacchetto che si desidera installare e non preoccuparsi se i pacchetti richiesti sono stati installati o meno. I pacchetti che non possono essere trovati sul sistema vengono cercati nei repository disponibili per il sistema.

Riferimenti

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


grazie per la risposta, per me la lista yum installata ha 940 righe mentre rpm -qa ha 895 righe, hai idea di quale potrebbe essere la differenza?
John Smith,

@johnSmith, Yumgestisce le dipendenze e recupera i pacchetti per riempirli. Yumesegue efficacemente lo stesso comando rpmma include anche tutti i pacchetti necessari per abbinare le dipendenze.
Ramesh,

yumè una manna dal cielo per la gestione delle dipendenze dei pacchetti, ma è irrilevante quando elenca semplicemente i pacchetti installati su un sistema. Vedi James e la mia risposta per il motivo della differenza.
Anthony Geoghegan,

0

yum list installed può creare un output a due righe, se il nome del pacchetto e la versione del pacchetto sono lunghi.


Questa risposta può essere breve ma è corretta (quindi votazione).
Anthony Geoghegan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.