Lista diferente de pacotes instalados reportados por rpm comparado ao yum

8

Eu quero ter o Servidor B para ter exatamente a mesma configuração que o Servidor A. O servidor A e B tem o mesmo Arch e o mesmo hardware.

Meu plano é ter uma lista de todas as coisas instaladas no Servidor A e instalá-lo usando a lista no Servidor B, algo como:

yum -y install $(cat installed.txt)

No servidor A, devo usar:

rpm -qa > installed.txt

ou:

yum list installed > installed.txt  

As listas parecem ser diferentes e não tenho ideia do motivo.

yum list installed tem 930 linhas, enquanto rpm -qa tem 895 linhas, o que pode ser a diferença?

    
por john Smith 23.07.2014 / 18:40

5 respostas

4

what might be the difference ?

O principal motivo para o número diferente de linhas é que a saída produzida por yum é formatada para que cada campo seja alinhado verticalmente (independentemente do tamanho do nome do pacote e / ou número da versão). Ele faz isso usando duas linhas para listar esses pacotes e preenchendo a segunda linha com caracteres de espaço para alinhar os campos corretamente. A seguinte saída (de uma caixa do CentOS 6) mostra que duas linhas são usadas para listar o pacote 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

No entanto, este não é o motivo apenas e pode ser visto massageando a saída dos dois comandos antes de compará-los:

Para a saída do comando rpm :

  1. Classifique-o para que os pacotes que começam com uma letra maiúscula apareçam antes daqueles com letras minúsculas:

    rpm -qa | LC_ALL=C sort
    
  2. Use o comando sed para remover os números da versão do pacote:

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

Para a saída do comando yum :

  1. Remova as duas primeiras linhas de cabeçalho ( Loaded plugins e Installed Packages ):

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    Podemos usar sed para isso:

     yum list installed | sed '1,2d;'
    
  2. Também podemos usar sed para remover todas as linhas que são continuações de uma listagem de pacotes (essas linhas começam com um número de espaços para que todas as versões do pacote sejam alinhadas).

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

Agora, podemos usar o comando diff para comparar a saída dos dois arquivos. Veja os resultados da caixa do CentOS 6:

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

Conclusão

Isso mostra que rpm -qa também inclui listagens de pacotes para as chaves públicas confiáveis para assinar pacotes, enquanto o comando yum omite esses pacotes.

    
por 15.12.2016 / 13:21
6

yum list installed has 930 lines while rpm -qa has 895 lines, what might be the difference ?

Isso provavelmente é apenas a formatação de diferenças. yum list fará um monte de embrulhos inteligentes para o seu tamanho de terminal.

O que você provavelmente quer fazer é usar:

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

# Run this on the new server, with the input from the above.
yum-debug-restore
    
por 24.07.2014 / 19:06
1

Não sei bem por que as listas são diferentes, mas sei que rpm -qa > installed.txt é a maneira correta de encontrar todos os pacotes instalados. Ele procurará yum installed e rpm installed .

Além disso, o formato da saída rpm -qa funcionará melhor com o comando yum install que você deseja executar.

    
por 23.07.2014 / 18:48
0

yum list installed me fornece a saída abaixo.

pam_krb5.i386                        2.2.14-22.el5                     installed

Agora, rpm -qa tem o abaixo para dizer.

pam_krb5-2.2.14-22.el5

Ambos os comandos me fornecem o mesmo número de linhas que a saída. Eu iria com rpm -qa list.

Além disso, em esta resposta, vejo a informação abaixo.

there is the program, "rpm", which manipulates specifically the packages it is asked to manipulate, and there is "yum", which is a more intelligent management system that can find dependencies and download .rpm files even if they're not in the system.

Portanto, a diferença pode ser yum resolve as dependências, mas rpm instalou todas as dependências e, portanto, fornece uma lista mais completa.

Eu vejo a diferença real entre yum e rpm como abaixo.

O problema mais proeminente com rpm é um estado comumente referido pela maioria das pessoas como dependência hell . Este problema ocorre com pacotes que dependem de muitos outros pacotes, alguns desses pacotes também dependem de muitos outros pacotes. É de conhecimento geral que você deve instalar todas as dependências para o programa funcionar corretamente. rpm não pode fazer isso automaticamente por você. Só pode verificar se todos os pacotes necessários estão instalados antes de instalar o pacote necessário. Rastrear e instalar manualmente cada dependência é uma tarefa importante para a maioria das pessoas que desejam instalar inicialmente um único pacote.

yum é capaz de rastrear as dependências de um pacote e instalá-las antes de instalar o pacote que o usuário queria instalar. Isso simplifica todo o processo, pois você só precisa saber o nome do pacote que deseja instalar e não se preocupar se os pacotes necessários foram instalados ou não. Pacotes que não podem ser encontrados no sistema são pesquisados nos repositórios que estão disponíveis para o sistema.

Referências

link

    
por 23.07.2014 / 18:49
0

yum list installed pode criar uma saída de duas linhas, se o nome do pacote e a versão do pacote forem longos.

    
por 15.12.2016 / 11:20

Tags