TL; DR
¡El tercer intento realmente funciona! Dejo los primeros 2 intentos para que otros que puedan encontrarse con estas preguntas y respuestas en el futuro tengan alguna idea de cuán no trivial es el problema de analizar la información de la versión RPM y determinar el linaje de los cuales vino primero, segundo, etc.
Intento n. ° 1 (OP dijo que no funcionó)
Este comando ordenará la salida y le dará orden de versión:
$ rpm -q kernel --queryformat "%{VERSION} %{RELEASE}\n"|sort -n
2.6.18 238.12.1.el5
2.6.18 238.19.1.el5
2.6.18 274.12.1.el5
2.6.18 308.8.2.el5
POR QUÉ NO FUNCIONÓ: una persona ingenua pensaría que puede usar alguna variante del sortcomando para realizar esta tarea, pero hay suficiente variabilidad e inconsistencia en el formato de la información de la versión real para un RPM dado que simplemente no es t a la altura de la tarea.
Intento n. ° 2 (OP dijo que no funcionó)
$ rpm -q --last kernel | head -n 1 | cut -d' ' -f1
kernel-2.6.35.14-106.fc14
POR QUÉ NO FUNCIONÓ: tenía grandes esperanzas de que este enfoque arrojaría los resultados que el OP estaba buscando, pero el problema con este, como señaló @Joel en los comentarios, es que el --lastcambio solo está devolviendo los resultados ordenados por la fecha en que se instalaron los RPM.
Intento n. ° 3
Este definitivamente hará el trabajo. Encontré un conjunto de herramientas llamadas Herramientas de desarrollo RPM. Hay 2 herramientas en esta suite que le permitirán determinar si una versión de un RPM es más nueva o más antigua que otra.
Si el RPM no está instalado, puede hacerlo de la siguiente manera:
yum install rpmdevtools
La primera herramienta que es útil se llama rpmdev-vercmp. Esta herramienta puede comparar 2 nombres de RPM y decirle cuál es más nuevo. Por ejemplo:
$ rpmdev-vercmp kernel-2.6.35.14-100.fc14.x86_64 kernel-2.6.35.14-103.fc14.x86_64
0:kernel-2.6.35.14-103.fc14.x86_64 is newer
Después de encontrar esto, estaba listo para armar un script de shell, pero luego me di cuenta, hombre, soy flojo, así que busqué unos minutos más y encontré otra herramienta en la suite llamada rpmdev-sort.
Esta herramienta es de pago. Puede usarlo de la siguiente manera:
$ rpm -q kernel | rpmdev-sort
kernel-2.6.35.14-100.fc14.x86_64
kernel-2.6.35.14-103.fc14.x86_64
kernel-2.6.35.14-106.fc14.x86_64
Hay muchas herramientas en las Herramientas de desarrollo de RPM que podrían valer la pena para otras, así que las enumero aquí para referencia futura.
$ rpm -q --queryformat '[%{NAME} %{FILEMODES:perms} %{FILENAMES}\n]' rpmdevtools \
| grep -E "^.* -..x..x..x " \
| awk '{print $3}' \
| sed 's#/usr/bin/##' \
| paste - - - \
| column -t
annotate-output checkbashisms licensecheck
manpage-alert rpmargs rpmdev-bumpspec
rpmdev-checksig rpmdev-cksum rpmdev-diff
rpmdev-extract rpmdev-md5 rpmdev-newinit
rpmdev-newspec rpmdev-packager rpmdev-rmdevelrpms
rpmdev-setuptree rpmdev-sha1 rpmdev-sha224
rpmdev-sha256 rpmdev-sha384 rpmdev-sha512
rpmdev-sort rpmdev-sum rpmdev-vercmp
rpmdev-wipetree rpmelfsym rpmfile
rpminfo rpmls rpmpeek
rpmsodiff rpmsoname spectool
Una alternativa al # 3
Una alternativa que el OP mencionado en los comentarios es usar sort -V. Eso es una capital -V. Nunca había oído hablar de este cambio tampoco. Desde la sortpágina del manual:
-V, --version-sort
natural sort of (version) numbers within text
Como resultado sort, proporciona una función para ordenar los números de versión para que también pueda realizar la clasificación de la siguiente manera:
$ rpm -q kernel | sort -V
kernel-2.6.35.14-100.fc14.x86_64
kernel-2.6.35.14-103.fc14.x86_64
kernel-2.6.35.14-106.fc14.x86_64