Quero que o Servidor B tenha exatamente a mesma configuração do Servidor A. Os Servidores A e B têm 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 preferir usar:
rpm -qa > installed.txt
ou:
yum list installed > installed.txt
As listas parecem diferentes e não faço ideia do porquê.
yum list installed
tem 930 linhas enquanto rpm -qa
tem 895 linhas, qual pode ser a diferença?
diff
editou as saídas (possível após a classificação)?rpm
lista, pois ela possui a lista que pode ser usada noyum
comando do servidor b .Respostas:
A principal razão para o número diferente de linhas é que a saída produzida por
yum
é formatada para que cada campo seja alinhado verticalmente (independentemente do comprimento do nome do pacote e / ou número da versão). Isso é feito 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 odevice-mapper-persistent-data.x86_64
pacote:No entanto, esse não é o único motivo e pode ser visto massageando a saída dos dois comandos antes de compará-los:
Para a saída do
rpm
comando:Classifique-o para que os pacotes que começam com uma letra maiúscula apareçam antes daqueles com letras minúsculas:
Use um
sed
comando para remover os números de versão do pacote:Para a saída do
yum
comando:Remova as duas primeiras linhas do cabeçalho (
Loaded plugins
eInstalled Packages
):Podemos usar
sed
para isso:Também podemos usar
sed
para remover todas as linhas que são continuações de uma lista de pacotes (essas linhas começam com um número de espaços para que todas as versões do pacote estejam alinhadas).Agora, podemos usar o
diff
comando para comparar a saída dos dois arquivos. Aqui estão os resultados da caixa do CentOS 6:Conclusão
Isso mostra que
rpm -qa
também inclui listagens de pacotes para as chaves públicas confiáveis para assinar pacotes enquanto oyum
comando omite esses pacotes.fonte
Isso provavelmente é apenas formatação de diferenças. A lista yum fará um embrulho inteligente para o tamanho do seu terminal.
O que você provavelmente quer fazer é usar:
fonte
Não sei ao certo 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
tanto quantorpm installed
.Além disso, o formato da
rpm -qa
saída funcionará melhor com oyum install
comando que você deseja executar.fonte
yum list installed
me dá a saída como abaixo.Agora,
rpm -qa
tem o seguinte a dizer.Ambos os comandos me dão o mesmo número de linhas que a saída. Eu iria com a
rpm -qa
lista.Além disso, a partir desta resposta, vejo a informação abaixo.
Portanto, a diferença pode ser
yum
resolver as dependências, masrpm
instalou todas as dependências e, portanto, fornece uma lista mais completa.Eu vejo a diferença real entre
yum
erpm
como abaixo.O problema mais proeminente
rpm
é um estado comumente referido pela maioria das pessoas como o inferno da dependência . Esse problema ocorre com pacotes que dependem de muitos outros pacotes, alguns desses pacotes também dependem de muitos outros pacotes. É do conhecimento geral que você deve instalar todas as dependências para que o programa funcione corretamente.rpm
não pode fazer isso automaticamente por você. Ele pode apenas verificar se todos os pacotes necessários estão instalados antes da instalação do pacote necessário. O rastreamento e a instalação manual de cada dependência são uma tarefa importante para a maioria das pessoas que deseja instalar apenas um único pacote inicialmente.yum
é capaz de rastrear as dependências de um pacote e instalá-las antes de instalar o pacote que o usuário desejava instalar. Isso simplifica todo o processo, pois você precisa saber apenas o nome do pacote que deseja instalar e não se preocupar se os pacotes necessários foram instalados ou não. Os pacotes que não podem ser encontrados no sistema são procurados nos repositórios disponíveis para o sistema.Referências
http://www.differencebetween.net/technology/difference-between-yum-and-rpm/
fonte
Yum
lida com dependências e busca pacotes para preenchê-los.Yum
executa efetivamente o mesmo comando,rpm
mas também inclui todos os pacotes necessários para corresponder às dependências.yum
é uma dádiva de Deus para gerenciar dependências de pacotes, mas isso é irrelevante quando é simplesmente listar os pacotes instalados em um sistema. Veja James e minha resposta para o motivo da diferença.yum list installed
pode criar uma saída de duas linhas, se o nome e a versão do pacote forem longos.fonte