Como “rpm -i” um pacote somente quando uma versão mais antiga não existe?

3

Desejo instalar alguns pacotes RPM de um script de shell. Eu quero garantir que cada pacote seja de fato instalado, mas eu não quero atualizar um pacote que já tenha uma versão mais antiga instalada (para evitar ir profundamente à resolução de dependências).

Como posso conseguir isso de tal forma que um caso em que uma versão mais antiga já esteja instalada retornará sem um código de erro, enquanto em outros casos de falhas haverá um código de erro retornado? Isso para que eu possa controlar a boa execução do script.

    
por Dunaril 06.09.2011 / 11:11

4 respostas

7

você pode instalar dependendo da existência do pacote no sistema:

 rpm -q mypackage || rpm -i mypackage.rpm
    
por 06.09.2011 / 12:14
2

Use o seguinte comando rpm -q mypackage && rpm -i mypackage.rpm . Se a consulta do rpm for bem-sucedida, a instalação do pacote rpm prosseguirá. Senão Se a consulta falhar, a instalação não prosseguirá. No entanto, se você usar || em vez de && , então, apesar do comando anterior de consultar o pacote, ele tentará instalar o pacote, o que, de qualquer forma, não faz sentido.

    
por 30.12.2014 / 18:58
0

E se você testar primeiro se o pacote em questão já está instalado e, caso contrário, você o instalará. Como você escreveu, você quer perceber isso dentro de um script Shell, isso seria algum tipo de if -clause.

pseudocódigo:

if is_installed($package)
then
  return is_already_installed
else
  rpm -i $package
  return $?
fi

A primeira parte poderia ser estendida por outro teste na versão atualmente instalada (por exemplo, para um relatório final do script).

    
por 06.09.2011 / 11:24
0

Você pode encontrar rpm -q <package name> útil ou mesmo rpm -U para uma atualização.

    
por 06.09.2011 / 11:47