yum deve erro quando um pacote não está disponível

14

Recentemente, encontrei um bug em um script em que tentei fazer o seguinte:

yum -y install another_package.x86_64 some_package.x86_64 && run_my_script

O script funcionou bem em um CentOS mais recente, mas quando tentei executá-lo no Cent OS 5, some_package.x86_64não estava disponível. Mas, em vez de errar e parar, yumapenas imprimiu a mensagem:

No package some_package.x86_64 available.

Como forçar yuma erro nessas situações (qual IMO deve ser o padrão) para tornar meus scripts mais robustos?

pmr
fonte
Crie seu script com mais confiança e verifique o valor de retorno do yum antes de continuar.
Frlan
1
@frlan Esse é o problema. yumfelizmente retorna 0neste caso. Meu script já está verificando o valor de retorno antes de continuar. Observe o &&?
Pmr 28/05

Respostas:

11

Como você descobriu, esse comportamento mudou entre o RHEL 5 e 6 (consulte https://bugzilla.redhat.com/show_bug.cgi?id=736694 para alguma discussão). A partir desse link, a verificação do código de retorno de yum info <pkg>deve permitir o cancelamento do script, conforme necessário. Algo como:

# Set a variable containing the packages to install:
pkgs_to_install='another_package.x86_64 some_package.x86_64'

# Loop over the packages in the list:
for pkg in ${pkgs_to_install}; do
  # Stop executing if at least one package isn't available:
  yum info ${pkg} >> /dev/null 2>&1 || exit
done

# Continue running your original script:
yum -y install ${pkgs_to_install} && run_my_script
mvermaes
fonte
3
OK, isso ajuda e confirma que não sou louco por pensar que esse deve ser o padrão.
Pmr
2
ajuda bem, o comportamento atual do yum é bastante hostil para o uso de scripts.
Karata
13

Pelo bug 1274211 , isso foi corrigido no yum-3.4.3-133.el7. No entanto, você precisa ativar o modo estrito.

A maneira mais fácil de fazer isso para fins de script é através da opção de linha de comando:

yum -y --setopt=skip_missing_names_on_install=False install another_package.x86_64 some_package.x86_64 && run_my_script

No entanto, você também pode configurá-lo como uma opção de configuração no seu yum.conf:

[main]
skip_missing_names_on_install=0
Boicote SE para Monica Cellio
fonte