
Tengo un RHEL y en uno de los servidores instalé el mismo paquete RPM en dos versiones diferentes.
[root ~]# rpm -qa | grep my-package-name
my-package-name-6.6.2-129.x86_64
my-package-name-7.0.2-1.x86_64
Me pregunto si es posible recibir solo el nombre del paquete anterior. Básicamente quiero lograr algo como esto:
[root ~]# rpm -qa | grep my-package-name | get-the-oldest-package
¿Cómo puedo hacerlo?
Respuesta1
No estoy muy seguro de cómo lograste instalar dos versiones del mismo paquete, pero esto debería funcionar:
rpm -q --queryformat "%{VERSION} %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" my-package-name | \
sort -V | \
awk 'NR==1 { print $2 }'
La primera línea consulta la base de datos de RPM para mi-nombre-paquete, pidiendo a RPM que proporcione los resultados en un formato específico: la VERSIÓN seguida de los campos predeterminados "rpm -qa". Esto se canaliza a sort -V
(intento) para ordenar los números de versión, seguido de una canalización a awk
para imprimir solo la primera línea, eliminando el campo VERSIÓN adicional, lo que da como resultado la rpm -qa
salida predeterminada.
Esto supone, con suerte, que está ejecutando esto en un sistema RHEL que tiene un -V
indicador para ordenar.
Respuesta2
Siempre estoy paranoico acerca de depender de programas que interpreten cadenas de versión, por lo que, como alternativa a la solución de Jeff, también puedes hacer esto:
[root@jb87-workstation ~]# rpm -q kernel --queryformat "%{INSTALLTIME} %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | sort -n | head -1 | awk '{print $NF}'
kernel-4.8.13-300.fc25.x86_64
(sustituyendo kernel
el nombre de su paquete)
Básicamente, eso imprime el nombre completo del paquete ejecutando el mismo rpm -qa
comando y simplemente usándolo --queryformat
para prefijar cada línea con la marca de tiempo de Unix de cuando se instaló (que está en la %{INSTALLTIME}
etiqueta). Luego sort -n
ordena el resultado del más antiguo al más nuevo y simplemente toma la primera línea del resultado e imprime la última columna, que será el nombre completo del paquete.
Sin embargo, el de Jeff funciona bien. Probablemente sea más una cuestión de preferencia personal.
Respuesta3
Puede utilizar yum downgrade nombre-paquete. A veces, los paquetes nuevos tenían un error. Bajé al paquete anterior.