yum install local rpm trows error se atualizado

4

ao instalar pacotes rpm a partir do diretório de arquivos local, ele é executado na primeira vez

sudo yum install packages/* -y --disablerepo=*

quando a mesma coisa é executada pela segunda vez como parte de scripts automatizados, ele gera um erro (código de saída 1)

packages/package.rpm: does not update installed package.
Error: Nothing to do

Eu posso executar a atualização (código de saída 0)

sudo yum update packages/* -y --disablerepo=*
...
No packages marked for update

o problema com isso é que a atualização irá ignorar os pacotes que não estão instalados.

Eu não quero ignorar o código de saída se houver algum problema real aqui, e só quero fazer install-or-update . Existe um rpm -i equivalente que conseguiria isso? Por favor, note que isso é feito em um grupo de pacotes rpm que podem, a qualquer momento, incluir outros adicionais.

Eu acho que uma opção seria fazer uma iteração sobre eles em um shell script e verificar se eles estão instalados ou não, mas, novamente, a resolução de dependências pode se tornar bastante dolorosa e soar como reinventar uma moto.

ATUALIZAÇÃO:% rpm --install trará o código de saída dependendo do número de pacotes com falha. link

rpm --freshen irá ignorar qualquer rpms que não esteja instalado anteriormente, sem fornecer nenhuma saída.

    
por JackLeo 26.10.2017 / 11:37

1 resposta

3

no meu sistema (centos6, centos7) "yum localinstall" retornará o código 0 mesmo com a mensagem "Error: Nothing to do", enquanto "yum install" retorna 1.

sudo yum localinstall packages/* -y --disablerepo=*

De qualquer forma, você também pode verificar o resultado da mensagem para ignorar isso como um "erro normal" em seus scripts de automação, como, por exemplo, usando o bash:

sudo yum install packages/* -y --disablerepo=* 2>&1 | tee /tmp/yum.output
grep -q "Error: Nothing to do" /tmp/yum.output
if [ $? -eq 0 ]; then
  ... code for no error
else 
  ... code for error
fi
    
por 26.10.2017 / 12:53