Como obter lista de pacotes a serem atualizados utilizando o apt-get?

3

Estou curioso para saber se existe uma maneira amigável de script para calcular o equivalente a apt list --upgradeable . Isso produz uma boa saída com exatamente um candidato a upgrade por linha, muito parseable. MAS, apt também avisa:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Então, sinto que devo usar venerable apt-get . Infelizmente, a saída para isso é algo como:

apt-get -s --no-download dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  dbus libdbus-1-3
The following packages will be upgraded:
  bash gcc-8-base gpgv libedit2 libgcc1 libprocps7 libpsl5 libselinux1 libsemanage-common libsemanage1 libsepol1 libsqlite3-0 libstdc++6 perl-base
  procps publicsuffix rsyslog twigpilot-core
18 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
...

O que é muito menos parseable. Então, eu esperava encontrar uma maneira de obter apt-get update para imprimir uma lista mais sucinta como apt .

(por favor, me redirecione se houver um fórum de pilha melhor para fazer perguntas, não parece que há um vencedor claro)

    
por Travis Griggs 12.06.2018 / 20:52

3 respostas

2

Eu não uso o Ubuntu regularmente, mas e quanto a isso:

$ apt-get -s --no-download dist-upgrade -V | grep '=>' | awk '{print$1}'

Imprime um pacote por linha. Conforme descrito em man apt-get :

   -V, --verbose-versions
       Show full versions for upgraded and installed packages. Configuration Item: APT::Get::Show-Versions.
    
por 12.06.2018 / 21:15
1

É apt-show-versions -u o que você está procurando? De sua página de manual :

-u, --upgradeable

    Print only upgradeable packages

Liste todos os pacotes disponíveis para atualização em um arquivo de texto e exiba-os no formato de coluna:

apt-show-versions -u | column -t > debupdlist-$(date '+%Y%m%d').txt

Relacione os nomes dos pacotes atualizáveis:

apt-show-versions -u | cut -d: -f1 
    
por 12.06.2018 / 21:15
0

apt (não apt-get ) fornece isto:

user@host:~$ sudo apt list --upgradable
Listing... Done
ifupdown/xenial-updates 0.8.10ubuntu1.4 amd64 [upgradable from: 0.8.10ubuntu1.3]
libldap-2.4-2/xenial-updates 2.4.42+dfsg-2ubuntu3.3 amd64 [upgradable from: 2.4.42+dfsg-2ubuntu3.2]
[etc]

Para obter apenas nomes de pacotes, você pode:

user@host:~$ sudo apt list 2> /dev/null --upgradable | awk -F/ 'NF>1 { print $1 }'
ifupdown
libldap-2.4-2
[etc]
    
por 12.06.2018 / 23:10

Tags