Faça o apt-get atualizar e atualizar automatizar e desacompanhado

19

Tenho cerca de 7 servidores Debian que gerencio e gostaria de configurá-los para atualizarem automaticamente. Então, criei um script assim:

#!/bin/sh
apt-get update
apt-get upgrade

e colocou-o na lista crontab de root . Infelizmente, ele sempre fica pendurado na seção Atualizar, perguntando se tenho certeza de que quero atualizar. Como é uma tarefa do cron, não vejo a saída até me enviarem um e-mail dizendo que ela falhou. Existe uma maneira de fazer isso pular esse aviso e apenas fazer a atualização automaticamente?

    
por Canadian Luke 30.12.2013 / 20:51

4 respostas

33

Use a opção -y para o apt-get para que ele não pergunte. De man apt-get :

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

Você também pode definir a variável env de DEBIAN_FRONTEND

DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
    
por 30.12.2013 / 20:54
19

Bem, talvez você esteja usando a ferramenta errada. O pacote unattended-upgrades instala atualizações de segurança diariamente (pode ser configurado), você pode configurar quais pacotes atualizar ou não atualizar, etc. Pode ser instalado usando:

sudo apt-get install unattended-upgrades

De man unattended-upgrades :

The configuration is done via the apt configuration mechanism. The default configuration file can be found at /etc/apt/apt.conf.d/50unattended-upgrades

    
por 30.12.2013 / 20:58
3

enquanto as respostas anteriores são informativas, elas não evitam o "problema" de entrada exigido por meios humanos durante upgrade . portanto, estou usando o seguinte:

export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo -E apt-get -qy update
sudo -E apt-get -qy -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
sudo -E apt-get -qy autoclean

para incluir upgrades de 'distribuição' como os kernels usam o comando dist-upgrade .

por favor, consulte o manpgage de dpkg para informações detalhadas sobre esses parâmetros.

nota importante : chamando sudo , incluindo o -E é obrigatório:

Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.

caso contrário, as declarações EXPORT não afetarão as chamadas de apt-get !

o crédito vai para Remy van Elst ! obrigado!

    
por 15.11.2017 / 16:05
2

Uma ferramenta genérica para esse tipo de coisa é yes :

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or 'y'.

Então, por exemplo, você poderia fazer

yes | sudo apt-get upgrade 

Observe que, no caso específico de apt-get upgrade , usando as opções sugeridas por @Braiam ou @ArthurUlfeldt é melhor.

    
por 30.12.2013 / 21:02

Tags