Como saber se há atualizações disponíveis?

7

Estou executando um servidor Ubuntu 12.04 LTS. E eu acho que seria bom se eu pudesse ser informado quando as atualizações estiverem disponíveis. Mas não consigo descobrir como saber ...

Eu tentei ver a página apt-get man. A partir disso, eu pude usar apt-get -s upgrade para obter a saída do apt-get em um script sem bloquear as questões.

Agora, vejo claramente a diferença:

As atualizações estão disponíveis:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  dpkg dpkg-dev libdpkg-perl
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst dpkg [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Conf dpkg (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Inst dpkg-dev [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all]) []
Inst libdpkg-perl [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf libdpkg-perl (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf dpkg-dev (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])

As atualizações não estão disponíveis:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Mas eu não sei como proceder a partir daí. Como posso saber, a partir de um script bash (ou script php), que existem atualizações disponíveis ou não?

Editar:

Aqui está o meu código bash atual. Não funciona.

updates_available='/etc/update-motd.d/90-updates-available'

if [ "${updates_available}" = "0 packages can be updated. 0 updates are security updates." ];
then
   echo "No updates are available"
else
   echo "There are updates available"
fi
    
por Adeline 29.04.2014 / 21:17

1 resposta

15

Leia as páginas do manual para motd(5) , pam_motd(8) e update-motd(5) .  No meu sistema, /etc/update-motd.d/90-updates-available invoca /usr/lib/update-notifier/update-motd-updates-available , que exibe isso quando eu efetuo login:

19 packages can be updated.
12 updates are security updates.

Analisando um pouco mais, o script "...-updates-available" invoca /usr/lib/update-notifier/apt-check --human-readable . Se você ler isso (python), verá que se omitir o sinalizador legível, ele emitirá "19; 12" para stderr. Podemos pegar isso com isso:

IFS=';' read updates security_updates < <(/usr/lib/update-notifier/apt-check 2>&1)
echo $updates
echo $security_updates 
19
12

Agora você pode dizer:

if (( updates == 0 )); then
    echo "No updates are available"
else
    echo "There are updates available"
fi
    
por glenn jackman 29.04.2014 / 21:43