Recebi a difícil tarefa de implantar os pacotes de uma máquina "pura" para o resto deles - cerca de 120 máquinas no total. Todas as máquinas estão executando o CentOS 6.8. Os usuários avançados fizeram um checkout funcional na máquina original e consideraram que valeria a pena para todos os testes / simulações, etc.
Você acha que isso seria tão simples quanto fazer uma lista yum instalada > pristinemachine_pkgs.txt na máquina original, então, no resto deles, yum install $ (cat pristinemachine_pkgs.txt) . No entanto, há diferenças suficientes nos resultados do yum que produzem "Pacote não disponível". O que é funcionando é este:
rpm -qa --qf="%{NAME}.%{ARCH}\n" | sort > pristinemachine_pkgs.txt
Em seguida, na máquina de teste:
yum install $(cat pristinemachine_pkgs.txt)
No entanto, estou encontrando alguns problemas ao analisar os resultados da máquina original e da máquina de teste depois de fazer isso. Aparentemente, meu antecessor tinha habilitado temporariamente um repo EPEL, pacotes instalados, removido o repositório e instalado RPM's únicos. Felizmente, essa lista não é tão grande assim. Para aqueles curiosos em saber como eu criei isso, eu rodei o comando de manifesto do RPM anterior em ambas as máquinas e o sdiff'ed:
http://pastebin.com/pFempAZN
Em seguida, copie / cole os itens da coluna da direita em um novo arquivo, e agora estou tentando encontrar algum tipo de acordo de linha yin info extrarpms.txt para analisar o repositório de origem. Estou tendo problemas duas vezes:
for i in $(cat extrarpms.txt); do yum info $i | grep Name && grep From; done
Aqui está o pastebin de extrarpms.txt para referência: link
Nosso ambiente atualmente não permite soluções de gerenciamento de configuração (mas estou incomodando-as) como Ansible, Puppet, Chef, Salt, etc. Isso não depende de mim, infelizmente. Por último, eu preciso rpm --nodeps -ev a lista de RPMs na máquina candidata da coluna esquerda da saída do sdiff. Temos medo de fazer o yum erase $ (cat badpkgs.txt) porque fomos mordidos pelo yum antes de remover mais coisas do que deveria. Daí a opção --nodeps.
Então, para finalizar tudo isso, se algum de vocês tivesse algo semelhante, como você poderia lidar com esse esforço, fazer download de RPMs individuais da lista da máquina original que não combina com as máquinas candidatas e algo ao longo do linhas de:
for i in $(cat newpkgs.txt) do; rpm --nodeps -ivh $i; done
para os pacotes que o yum info shows não instalou de qualquer repositório?