yum dovrebbe errori quando un pacchetto non è disponibile


14

Di recente ho riscontrato un bug in uno script in cui ho provato a fare quanto segue:

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

Lo script funzionava bene su un CentOS più recente, ma quando ho provato a eseguirlo su Cent OS 5, some_package.x86_64non era disponibile. Ma invece di sbagliare e fermare yumappena stampato il messaggio:

No package some_package.x86_64 available.

Come posso forzare yuml'errore in tali situazioni (quale IMO dovrebbe essere predefinito) per rendere i miei script più robusti?


Costruisci la tua sceneggiatura più rigida e controlla il valore di ritorno di yum prima di continuare.
frlan,

1
@frlan Questo è il problema. yumritorna felicemente 0in questo caso. Il mio script sta già verificando il valore restituito prima di procedere. Notare il &&?
pm

Risposte:


11

Come hai scoperto, questo comportamento è cambiato tra RHEL 5 e 6 (vedi https://bugzilla.redhat.com/show_bug.cgi?id=736694 per qualche discussione). Da quel link, la verifica del codice di ritorno di yum info <pkg>dovrebbe consentire di interrompere lo script come richiesto. Qualcosa di simile a:

# 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

3
OK, questo aiuta e conferma che non sono pazzo a pensare che questo dovrebbe essere il valore predefinito.
pm

2
aiuta bene, l'attuale comportamento yum è abbastanza ostile per l'uso degli script.
Karata,

13

Per Bug 1274211 , questo è stato corretto in yum-3.4.3-133.el7. Tuttavia, è necessario abilitare la modalità rigorosa.

Il modo più semplice per farlo a scopi di scripting è tramite l'opzione della riga di comando:

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

Tuttavia, puoi anche impostarlo come opzione di configurazione nel tuo yum.conf:

[main]
skip_missing_names_on_install=0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.