Como obtenho uma lista de pacotes não-LTS instalados eficientemente?

5

Gostaria de ver até que ponto meu sistema é suportado por LTS por meio de quais pacotes são suportados por 5 anos e quais não são. Eu poderia desconsiderar alguns pacotes não-suportados pela 5yr, já que alguns são raramente usados ou muito pouco provável que entrem em problemas (de segurança).

Acho que isso é útil, pois é possível obter um relatório e tirar uma conclusão, por exemplo, "meu sistema é 100% LTS" , "devido a pacotes X, Y, Z, meu sistema é apenas 99% LTS" , "devido ao uso do KDE, meu sistema agora é 50% LTS ".

Como relacionado a minha resposta na questão O 12.04 LXDE tem LTS? , postei uma maneira de ver quais pacotes do Ubuntu possuem cinco anos de suporte. Por exemplo:

$ apt-cache show unity | grep ^Supported
Supported: 5y

$ apt-cache show lxde-core | grep ^Supported
<no output>

Eu poderia escrever um script para obter todas as informações para todos os pacotes, no entanto, os comandos apt-cache são terrivelmente lentos:

real    0m1.535s
user    0m1.484s
sys     0m0.036s

Com 2700+ pacotes instalados, isso levaria cerca de 70 minutos (!).

Como posso acelerar as coisas e obter um relatório para todos os pacotes não compatíveis com 5 anos no meu sistema?

Eu preferiria um simples comando apt-* shell para uso em um script de shell simples. Se isso exigir scripts mais avançados, como entrar em Python, tudo bem também. Eventualmente, gostaria de lançar um script (pequeno) para criar um relatório em um sistema de maneira fácil e rápida.

Nota: Eu não estou interessado na discussão sobre se ou não um sabor específico do Ubuntu fornece LTS ou não - isto é realmente apenas pacotes. Você pode apenas misturar pacotes LTS e não-LTS em um sistema.

    
por gertvdijk 07.01.2013 / 11:34

2 respostas

6

Eu não sei sobre o seu sistema, mas foi o que eu fiz:

time dpkg -l | grep 'ii' |  awk ' {print }' | xargs apt-cache show | grep '^Supported:' | grep -v '5y' | wc -l
158

real        0m27.549s
user        0m5.580s
sys         0m21.701s

não parece tão ruim assim?

O número total de pacotes:

dpkg -l | grep 'ii' | wc -l
2602

Estou rodando um AMD E-350 que não é exatamente um cpu rápido ...

Editar: número máximo de argumentos para xargs:

xargs --show-limits

...
POSIX upper limit on argument length (this system): 2091826
...
    
por Gerhard Burger 07.01.2013 / 11:59
4

Aqui está um one-liner rápido para você obter a lista de pacotes que são mantidos por menos de 5 anos, usando grep-dctrl (1):

sudo apt-get install dctrl-tools
dpkg -l | grep '^ii' |  awk ' {print }' | xargs apt-cache show | grep-dctrl -v -FSupported --exact-match -nsPackage 5y | sort | uniq

Você pode modificá-lo facilmente para procurar períodos de suporte diferentes.

    
por Matt Zimmerman 05.08.2014 / 22:08