apt-get upgrade não instalando atualizações através do trabalho de crontab

3

Após verificar como fazer atualizações automáticas com o crontab, editei o meu, como root, adicionando a seguinte linha:

00 11 * * * /usr/bin/apt-get upgrade -q -y >> /var/log/apt-upgrade.log

Agora, se eu executar manualmente o apt-get upgrade alguns minutos depois, ele mostrará que ele não instalou nenhuma das atualizações. O log não reporta nenhum erro, nem avisos. É apenas uma lista comum

Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
  binutils fontconfig fontconfig-config gnupg gpgv libcurl3
  libcurl4-openssl-dev libfontconfig1 libgcrypt11 libgcrypt11-dev libgd2-xpm
  libidn11 libidn11-dev libperl5.14 libpq5 libsqlite3-0 libssl-dev libssl-doc
  libssl1.0.0 libtiff4 linux-image-3.2.0-4-amd64 linux-libc-dev openjdk-7-jre
  openjdk-7-jre-headless openssh-client openssh-server openssl perl perl-base
  perl-modules ssh
31 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/93.7 MB of archives.
After this operation, 613 kB of additional disk space will be used.

Outras coisas que eu também tentei (não todas ao mesmo tempo, obviamente), sem resultados:

00 11 * * * apt-get upgrade -q -y >> /var/log/apt-upgrade.log
00 11 * * * root /usr/bin/apt-get upgrade -q -y >> /var/log/apt-upgrade.log
00 11 * * * apt-get upgrade -y >> /var/log/apt-upgrade.log

E nada acontece, nenhuma atualização é realmente instalada. O que estou fazendo errado?

    
por Arthur 06.10.2016 / 17:43

1 resposta

0

Você precisa definir DEBIAN_FRONTEND=noninteractive . Eu pareço lembrar que foi um pouco difícil de encontrar, já que na verdade é uma opção para debconf , não apt-get . No entanto, é mencionado, por exemplo, aqui e, claro, no manual de debconf .

Então, faça um script que contenha

#/bin/sh
DEBIAN_FRONTEND=noninteractive apt-get upgrade -q -y 

e execute isso do cron. E lembre-se de executar apt-get update também.

É claro que você deve usar unattended-upgrades ou algo especialmente projetado para isso.

Mas eu tenho uma máquina Debian usando esse script e funciona bem:

#/bin/sh
apt-get -q -q  update 
if apt-get -s upgrade | grep -q "0 upgraded" ; then
        true
else
        DEBIAN_FRONTEND=noninteractive apt-get -y -q upgrade
fi

O primeiro apt-get -s está lá para suprimir a saída e o e-mail inútil, caso não haja nada para atualizar.

Similar pergunta em askubuntu.

    
por 06.10.2016 / 20:25