¿Cómo obtener el nombre de un paquete anterior?

¿Cómo obtener el nombre de un paquete anterior?

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 awkpara imprimir solo la primera línea, eliminando el campo VERSIÓN adicional, lo que da como resultado la rpm -qasalida predeterminada.

Esto supone, con suerte, que está ejecutando esto en un sistema RHEL que tiene un -Vindicador 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 kernelel nombre de su paquete)

Básicamente, eso imprime el nombre completo del paquete ejecutando el mismo rpm -qacomando y simplemente usándolo --queryformatpara prefijar cada línea con la marca de tiempo de Unix de cuando se instaló (que está en la %{INSTALLTIME}etiqueta). Luego sort -nordena 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.

información relacionada