Encontrei o seguinte em um Pergunta StackOverflow ; a resposta que eu precisava, na verdade, não respondia a pergunta lá (e não foi selecionada como a resposta correta), então eu pensei em postá-la aqui para os outros acharem mais fácil.
yum list installed PACKAGE_NAME
Esse comando retorna alguma saída legível por humanos, mas, mais importante, retorna um código de status de saída; 0 indica que o pacote é instalado, 1 indica que o pacote é não instalado (não verifica se o pacote é válido, portanto yum list installed herpderp-beepbopboop
retornará um "1" da mesma forma yum list installed traceroute
será se você não tiver o traceroute instalado). Você pode verificar posteriormente "$?" para este código de saída.
Como a saída é um pouco contra-intuitiva, usei a versão "condensada" do @Chris Downs abaixo em uma função de empacotamento para tornar a saída mais "lógica" (ou seja, 1 = instalado 0 = não instalado):
function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then
true
else
false
fi
}
uso seria
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
EDITAR:
Substituído return
declarações com chamadas para true
e false
que ajudam a tornar a função mais legível / intuitiva, enquanto retorna os valores que o bash espera (ou seja, 0 para verdadeiro, 1 para falso).
Se você está apenas verificando um pacote no seu script, talvez seja melhor você testar yum list installed
diretamente, mas (IMHO) a função facilita a compreensão do que está acontecendo, e sua sintaxe é muito mais fácil lembre-se que yum
com todos os redirecionamentos para suprimir sua saída.