Classifique a versão dos pacotes instalados

3

Estou tentando obter a última versão do pacote do kernel instalado. A principal dificuldade é que no meu caso as versões podem ser instaladas em uma ordem errada, então não posso simplesmente usar o argumento --last de rpm .

Eu queria usar o comando coreutils ' sort (coreutils-8.4-31.el6_5.1) que contém um argumento --version-sort , mas isso não retorna como esperado:

$ rpm -q 'kernel' |sort --version-sort
kernel-2.6.32-431.5.1.el6.x86_64
kernel-2.6.32-431.11.2.el6.x86_64
kernel-2.6.32-431.17.1.el6.x86_64
kernel-2.6.32-431.el6.x86_64

rpm -q 'kernel' --last
kernel-2.6.32-431.17.1.el6.x86_64             mar. 13 mai 2014 09:48:44 CEST
kernel-2.6.32-431.11.2.el6.x86_64             jeu. 24 avril 2014 11:15:25 CEST
kernel-2.6.32-431.5.1.el6.x86_64              mer. 12 mars 2014 15:52:23 CET
kernel-2.6.32-431.el6.x86_64                  ven. 29 nov. 2013 17:48:19 CET

Como você pode ver, a revisão 431.e16 (a mais antiga) é classificada como a mais recente. Uma chamada para rpm -qi confirma que:

Release     : 431.17.1.el6                  Build Date: jeu. 08 mai 2014 02:48:49 CEST
Release     : 431.el6                       Build Date: ven. 22 nov. 2013 05:28:33 CET

Este é um bug conhecido de sort ? Já está consertado? Existe uma solução simples ou outra maneira de obter a última versão instalada?

    
por Antoine 03.06.2014 / 12:30

1 resposta

4

Você pode fazer isso especificando um formato de consulta personalizado.

# rpm -q --qf="%{BUILDTIME} %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel

Isto irá mostrar a hora em que o pacote foi originalmente criado (pela Red Hat) como um timestamp do UNIX seguido pelo nome do pacote.

Para terminar, tudo que você precisa é ...

# rpm -q --qf="%{BUILDTIME} %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel | \
  sort | tail -n 1 | cut -f 2 -d ' '
    
por 03.06.2014 / 12:48