Como configuro meu Raspberry Pi para atualizar / atualizar automaticamente?

34

Atualmente, para atualizar as coisas no meu Raspberry Pi, preciso digitar sudo apt-get updatee sudo apt-get upgrade. Existe uma maneira de configurá-lo para fazer isso automaticamente? Estou executando o Raspbian Jessie.

Isaac Corbrey
fonte

Respostas:

47

em vez de um cron manual, você pode instalar unattended-upgrades, o que é útil para garantir a instalação dos kernels mais recentes. É projetado principalmente para segurança.

https://wiki.debian.org/UnattendedUpgrades

apt-get install unattended-upgrades

Existem alguns bits que podem ser ajustados / configurados, mas o padrão é bom.

tedder42
fonte
5
Para mim, o padrão não estava bom. Ele não fez nada: o /var/log/unattended-upgrades/unattended-upgrades.logarquivo relatado Allowed origins are: []então basicamente não estava puxando nenhuma atualização no Após a atualização. /etc/apt/apt.conf.d/50unattended-upgradesPara incluir "origin=Raspbian,codename=${distro_codename},label=Raspbian";atualizações começaram a entrar.
Rabarberski
Meu estoque de ossos (em setembro de 2017) 50unattended-upgradeslista "origin=Debian,codename=${distro_codename},label=Debian-Security";e parece encontrar os pacotes relevantes corretamente. Claro que ignora muitos deles. Não configurei nenhuma lista branca ou negra.
Jon V
3
O padrão 50unattended-upgradesé realmente estúpido e precisa ser alterado para que isso funcione no Raspian. Não existe Raspian-Security. As atualizações de segurança não estão identificadas. É importante adicionar tanto "origin=Raspbian,codename=${distro_codename},label=Raspbian";e "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";para/etc/apt/apt.conf.d/50unattended-upgrades
user643011 8/18
23

Em um terminal, digite:

sudo su

Para acessar um prompt no nível raiz. Então corra:

crontab -e

Para começar a editar seu crontab, uma tabela de tarefas para executar automaticamente em um determinado momento. Ele será aberto no seu editor de texto preferido. Modifique-o para incluir as seguintes linhas:

0 7 * * 1 apt update && apt upgrade -y

Para atualizar e atualizar automaticamente seus aplicativos às 7h toda segunda-feira. Leia no crontab para ver como se adaptar ao seu gosto.

Comunidade
fonte
2
provavelmente é melhor colocar os comandos na mesma linha, &&pois eles estão relacionados e não há motivo para fazer 'upgrade' se 'update' falhar.
precisa saber é o seguinte
no crontab 0significa domingo, mas no seu código que você colocou 1, o comando seria executado na segunda-feira, não no domingo
rav_kr
3
dist-upgradeé melhor que upgrade, você acabará usando dependências quebradas apenas upgrade. Você também não obterá atualizações que exijam confirmações de diálogo. @ tedder42 apontou o método preferido pelo Debian (usando unattended-upgrades).
Ryanpcmcquen
Você perdeu o segundo sudo depois de adicionar o &&. Embora esteja na raiz crontab de qualquer maneira.
usar o seguinte comando
1
Não deveria haver nenhum sudolá dentro; você mudou para a rootconta usando su. O crontab do superusuário é executado com privilégios de superusuário.
goldilocks
8

Você pode instalar e configurar o cron-apt. Instale-o fazendo o seguinte:

apt-get install cron-apt

o arquivo de configuração principal é / etc / cron-apt / config

Uma coisa que adiciono à minha configuração é:

MAILON="always"

isso enviará um email sempre que for executado, não apenas se encontrar um erro.

Observe que a configuração padrão não instalará automaticamente as atualizações (existem alguns bons motivos para não fazer isso), mas você pode configurá-lo para fazer isso. Uma vantagem que este programa oferece sobre uma solução cron simples é que ele fornece controle sobre o que é instalado (faça o download apenas de novos pacotes, instale atualizações de segurança ou instale todas as atualizações).

Para definir o tempo de execução, edite o arquivo /etc/cron.d/cron-apt.

Você pode encontrar mais informações e opções de configuração aqui

O pacote inclui uma documentação muito boa, no entanto, é compactado em gzip. Para extrair o arquivo:

  1. crie um diretório para trabalhar - mkdir cron-apt_documentation
  2. mude para o novo diretório - cd cron-apt_documentation
  3. copie o arquivo compactado - cp /usr/share/doc/cron-apt/README.gz. (observe o ponto à direita)
  4. descompacte o arquivo - gunzip README.gz
  5. leia o arquivo - cat README | Menos
Steve Robillard
fonte
ouzcat /usr/share/doc/cron-apt/README.gz | less
5

Em sua configuração padrão, unattended-upgradesestá quebrado no Raspbian Buster. Não instalará atualizações cruciais para o kernel e outros softwares. Suas opções são:

Opção recomendada:

sudo apt install unattended-upgrades

echo 'Unattended-Upgrade::Origins-Pattern {
//      Fix missing Rasbian sources.
        "origin=Debian,codename=${distro_codename},label=Debian";
        "origin=Debian,codename=${distro_codename},label=Debian-Security";
        "origin=Raspbian,codename=${distro_codename},label=Raspbian";
        "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";
};' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-raspbian

Para atualizações de segurança mais rápidas (mas menos estabilidade, como os pacotes não foram aprovados para o rasbian), você pode adicionar pacotes debian-security ao apt:

echo 'deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free' | sudo tee /etc/apt/sources.list.d/debian-security.list

Você provavelmente precisará instalar novas chaves apt para o repositório debian .

Outras opções:

  • Para contornar isso usando cron-apt: sudo apt install cron-apt

  • Outras maneiras de contornar isso.

É recomendável usar atualizações autônomas e corrigir o pacote, porque é mais adequado para esse fim. O Cron-apt é sua segunda melhor opção, porque também é projetado para uma finalidade semelhante. Não tenho certeza de que um pode reiniciar o sistema automaticamente após uma atualização do kernel. As atualizações autônomas geralmente têm essa opção, mas não tenho certeza de que funcione com a correção acima.

Dej
fonte