Existe uma opção do Yum que cria um erro se um pacote estiver faltando?

5

Estou usando um conjunto de repositórios yum locais e tentando instalar um conjunto de pacotes desses repositórios. Eu notei que quando um dos pacotes na linha de comando não existe, Yum apenas mostra que não foi encontrado e segue seu caminho alegre.

Posso fazer o Yum sair quando isso acontecer? Existe algum outro utilitário do Yum que eu possa usar para entregar meus repositórios e meus pacotes e me informar se há algum problema?

yum --disablerepo=* --enablerepo=myrepo --nogpgcheck \
   --installroot=/var/some/place/test install \
   abasdfasfeafseasfeasef bash coreutils utils-linux

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package **abasdfasfeafseasfeasef** available.
No package **utils-linux** available.

<snip>

Complete!

Eu estou chamando Yum de outro script e não pareço ter uma maneira de saber se os pacotes que eu instalei estão realmente instalados.

    
por Randy 31.10.2014 / 22:32

3 respostas

3

Tente usar o dnf em vez do yum, ele falhará se um pacote não estiver disponível da maneira que você costumava usar. No CentOS você pode instalá-lo via:

yum -y install epel-release && \
yum -y install dnf

Em um pacote ausente, você receberá um erro:

dnf -y install foobar
Error: no package matched: foobar
    
por 05.05.2017 / 05:02
1

As versões modernas do yum (yum-3.4.3-133.el7 +, ticket ) fornecem dois opções que devem ajudar neste caso de uso:

skip_missing_names_on_install If set to False, 'yum install' will fail if it can't find any of the provided names (package, group, rpm file). Boolean (1, 0, True, False, yes, no). Defaults to True.

skip_missing_names_on_update If set to False, 'yum update' will fail if it can't find any of the provided names (package, group, rpm file). It will also fail if the provided name is a package which is available, but not installed. Boolean (1, 0, True, False, yes, no). Defaults to True.

Fonte: páginas do manual

Uso:

yum --setopt=skip_missing_names_on_install=False <commands-here>

    
por 22.10.2018 / 23:19
0

Eu não sei sobre o yum, mas você pode perguntar se um pacote está instalado usando rpm -q my_package ... . Ele sairá com status de falha se algum dos pacotes estiver faltando.

$ rpm -q abasdfasfeafseasfeasef bash coreutils utils-linux
package abasdfasfeafseasfeasef is not installed
bash-4.1.2-9.el6_2.x86_64
coreutils-8.4-19.el6.x86_64
package utils-linux is not installed
$ echo $?
1
$ rpm -q bash
bash-4.1.2-9.el6_2.x86_64
$ echo $?
0
    
por 31.10.2014 / 22:39