como tornar o yum tolerante com URLs de repo desfeitos

3

Eu tenho um número de instâncias do CentOS, algumas das quais foram usadas por desenvolvedores e têm repositórios de terceiros (às vezes seus próprios) ativados. No entanto, de um ponto de vista administrativo, é útil forçar a atualização de um script sem mexer no yum.conf local ou analisar a saída ou yum.repos.d para ver qual é o repositório interrompido incorreto. / p>

Parece que os desenvolvedores estavam atentos a isso com essa opção;

-t, --tolerant

mas claramente isso foi mais um desafio do que eles esperavam porque na man page;

              This option currently does nothing.

Obviamente, quando estou fazendo isso manualmente, posso trabalhar em torno dos repositórios com

yum --disablerepo=broken-repo  deplist mypackage

e para tornar uma atualização de script mais robusta, eu posso usar (o que definitivamente instala atualizações de distro)

yum -y --disablerepo=* --enablerepo=updates update

mas isso não pega o caso onde há EPEL, ou rpmforge, ou rbel, ou algum distribuidor de pacotes que eu teria que analisar o arquivo yum.repos.d primeiro para.

    
por Tom H 08.02.2012 / 08:54

1 resposta

2

Esse script pode ajudar um pouco:

LC_ALL=C yum repolist 2>/dev/null \
| awk '/^repo id/ {A=1; next} /^[a-zA-Z0-9_-]+ / {if(A) print $1}' \
| xargs -i yum -y --disablerepo=* --enablerepo={} update
# Some packages may need packages from other repository
yum -y update

Ele funciona obtendo uma lista de repositórios com yum repolist , selecionando nomes de repositórios da saída usando awk e, em seguida, tentando atualizar todos eles um no momento.

Não é 100% confiável, pois depende do formato de saída do yum imutável. Além disso, se a atualização precisar instalar outro pacote de um repositório diferente e houver um repositório corrompido, ele falhará de qualquer maneira - mas suponho que não seja tão comum.

    
por 08.02.2012 / 10:26

Tags