Saltar al contenido

¿Cómo puedo saber si un paquete está instalado a través de yum en un script bash?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *