Como posso distinguir os pacotes base dos demais quando executando rpm -qa?

2

Eu escrevi um script que, junto com outras tarefas, conecta-se a um servidor remoto e pega uma lista de todos os pacotes instalados e os instala, assim:

echo -e "\e[36m#===# Getting list of packages to install #===#\e[0m"
$ssh root@$srv 'rpm -qa --queryformat "%{NAME}\n" >/tmp/sw.lst'
$scp root@$srv:/tmp/sw.lst /tmp/
np='cat /tmp/sw.lst |wc -l'
echo -e "\e[36m#===# $np Packages are going to be installed! #===#\e[0m"
/usr/bin/xargs yum -y install < /tmp/sw.lst

Meu problema é que, quando ele é executado na lista, ele ignora muitos pacotes que vêm com a instalação padrão e estou tentando salvar esse tempo. Isso é possível?

    
por Itai Ganot 25.08.2013 / 10:25

2 respostas

1

Eu simplesmente faria um

ssh root@$srv 'rpm -qa' | xargs yum -y install

e vá buscar algum café ou algo assim, porque para encontrar uma solução que é

  1. mais rápido
  2. trabalha considerando cada pacote individual de máquinas

você ainda teria que fazer algo como comparar as duas máquinas rpm -qa e classificá-lo, executar o truque comm como o SvW sugerido e finalmente usar essa lista para uma instalação do yum ...

por que não deixar que você descubra isso?

Ou melhor ainda, por que não ter um repositório congelado ao qual todas as caixas estão conectadas e, em seguida, iniciar novas instalações (usando sapateiro / capataz / caminhada no espaço / o que você tem)? Você saberá cada pacote instalado desde o início, e todo sistema terá a mesma aparência (ou similar o suficiente)? Para manter os sistemas em sincronia, eu usaria o fantoche e especificaria a lista de pacotes que deveriam ser instalados lá ... - Então essa situação não aparecerá em primeiro lugar; desde que você quer economizar tempo usando isso, eu acho que você faz muito isso ...

    
por 25.08.2013 / 11:41
3

Não há nenhuma maneira que eu saiba para detectar que este pacote foi instalado durante a configuração do sistema operacional e essa lista pode variar dependendo das opções selecionadas durante o tempo de instalação.

Solução alternativa:

  • Crie uma lista semelhante para uma instalação básica.
  • Verifique se ambas as listas estão classificadas ( man sort )
  • use comm para exibir apenas linhas que não estão em ambos os arquivos

    comm prodinstall.txt  baseinstall.txt -2 -3 > install.txt
    
  • install.txt agora conterá apenas os pacotes que não estão na instalação base.
por 25.08.2013 / 11:01