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.

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.


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).


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


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:

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.