Entiende el código de forma correcta previamente a aplicarlo a tu trabajo si ttienes algo que aportar puedes dejarlo en la sección de comentarios.
Solución:
Encontré lo siguiente en una pregunta de StackOverflow semi-relacionada; la respuesta que necesitaba en realidad no respondía la pregunta allí (y no fue seleccionada como la respuesta correcta), así que pensé en publicarla aquí para que otros la encontraran más fácilmente.
yum list installed PACKAGE_NAME
Este comando devuelve una salida legible por humanos, pero lo que es más importante, devuelve un código de estado de salida; 0 indica el paquete es instalado, 1 indica que el paquete está no instalado (no comprueba si el paquete es válido, por lo que yum list installed herpderp-beepbopboop
devolverá un “1” al igual que yum list installed traceroute
lo hará si no tiene instalado traceroute). Posteriormente puede marcar “$?” para este código de salida.
Dado que la salida es algo contraria a la intuición, utilicé la versión “condensada” de @Chris Downs a continuación en una función de contenedor para hacer que la salida sea más “lógica” (es decir, 1 = instalado 0 = no instalado):
function isinstalled
if yum list installed "[email protected]" >/dev/null 2>&1; then
true
else
false
fi
el uso sería
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
EDITAR:
Sustituido return
declaraciones con llamadas a true
y false
que ayudan a que la función sea más legible/intuitiva, al tiempo que devuelven los valores que bash espera (es decir, 0 para true1 para false).
Si solo está buscando un paquete en su secuencia de comandos, es mejor que pruebe yum list installed
directamente, pero (en mi humilde opinión) la función hace que sea más fácil entender lo que está pasando, y su sintaxis es mucho más fácil de recordar que yum
con todas las redirecciones para suprimir su salida.
No cumple exactamente la condición previa de la pregunta “a través de yum”, pero es más rápido que “yum -q list”:
rpm -q
que devuelve el nombre exacto de la versión posiblemente instalada, así como el código de error “0” si está instalada y “1” si no.
Una línea más simple:
yum -q list installed packageX &>/dev/null && echo "Installed" || echo "Not installed"
Aquí puedes ver las reseñas y valoraciones de los lectores
Al final de todo puedes encontrar las interpretaciones de otros gestores de proyectos, tú igualmente tienes la libertad de insertar el tuyo si lo deseas.