Como encontrar o número de pacotes que precisam de atualização na linha de comando?

34

Estou trabalhando em alguma automação de administração do sistema usando fabric e gostaria de poder monitorar o número de pacotes que precisam ser atualizados em uma determinada máquina. Esta é a mesma informação que eu posso ver ao fazer o login em uma máquina, ou seja, nesta parte:

35 packages can be updated.
22 updates are security updates.

Existe um comando que eu possa executar (preferencialmente sem sudo) que forneça exatamente essas informações?

Eu olhei para as ligações apt-python, mas elas parecem ter uma alta curva de aprendizado e também parecem ter mudado bastante - eu gostaria de algo que funcione pelo menos desde lúcido, sem precisar faça coisas diferentes em diferentes versões do Ubuntu.

KayEss
fonte

Respostas:

33

Para obter essa saída, você pode usar o comando

sudo /usr/lib/update-notifier/update-motd-updates-available

ou, se você não quiser usar sudo,

cat /var/lib/update-notifier/updates-available

Explicação

O loginaplicativo mostra a saída encontrada no arquivo /etc/motd, que é um link simbólico para /var/run/motd.

Este último arquivo é atualizado pelo mounted-varrunserviço (consulte /etc/init/mounted-varrun.conf) chamando todos os scripts /etc/update-motd.d/e, em particular,

/etc/update-motd.d/90-updates-available

que por sua vez chama o script

/usr/lib/update-notifier/update-motd-updates-available

esse script executa várias ações e, finalmente, grava a saída no arquivo de texto

/var/lib/update-notifier/updates-available

EDITAR

Em relação à parte de reinicialização da pergunta, execute este comando

/usr/lib/update-notifier/update-motd-reboot-required

não dará saída se a reinicialização não for necessária.

enzotib
fonte
Estou apenas verificando uma máquina rodando 11.04 e o byobu mostra 44 atualizações necessárias. catO arquivo que você sugere está em branco e o script para o qual você aponta primeiro não existe nesta máquina - está em algum pacote que precisa ser instalado? Eu tenho /usr/lib/update-manager, mas nenhum update-notifierdiretório.
KayEss
Testado na área de trabalho 11.04. Esses arquivos pertencem ao update-notifier-commonque foi instalado automaticamente em uma instalação nova (não na atualização da 10.10).
enzotib
Eu olhei para mais algumas máquinas. Para aqueles que têm /var/lib/update-notifier/apt-checkisso, parece que retornam os dois números, ou seja, 43; 24 (43 atualizações, 24 são de segurança), mas mesmo isso não aparece em todas as minhas máquinas. Suponho que esse arquivo possa ter sido movido entre pacotes em versões diferentes.
KayEss
21

Por que você não pode simplesmente executar isso?

/usr/lib/update-notifier/apt-check --human-readable

É o que o / usr / lib / update-notifier / update-motd-updates-available faz para coletar as informações, pelo menos na versão do Ubuntu que estou usando (12.10).

Tom Barron
fonte
Apenas verificado em Lucid e trabalha lá também
KayEss
2
Ele grava sua saída no stderr. Quem faria isso?
precisa saber é o seguinte
2
Prefira essa abordagem, pois ela evita completamente todo o update-motdpacote e seu pensamento. Obrigado por apenas dar o comando direto.
jefflunt
3

Também procuro um método correspondente para uma verificação de atualização dentro de contêineres mínimos do docker, quando encontrei um comentário em /usr/lib/update-notifier/apt-check:

apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst

Isso permite uma verificação de atualização com script, sem a necessidade de instalar o update-notifier-commonpacote

Simon Sudler
fonte
0

Você pode usar o check_aptplug-in de monitoring-plugins-basic( Nagios ), com a vantagem de obter diferentes códigos de retorno, dependendo da disponibilidade de atualizações:

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

Os códigos de retorno têm os seguintes significados:

  • 0 -> nenhum pacote disponível para atualização
  • 1 -> pacotes não críticos disponíveis para atualização
  • 2 -> atualizações críticas disponíveis

Referências:

Clauz
fonte