Como fazer na CLI verificar se as atualizações acontecem a cada 4 semanas e instalá-las automaticamente sem acessar as fontes de software?

10

Eu tenho um conjunto de comandos personalizados que executo nos meus computadores depois de instalá-los. Como faço para o Ubuntu verificar atualizações a cada 4 semanas e instalá-las automaticamente na verificação?

Eu precisaria disso feito por meio da linha de comando para poder configurá-lo para usuários comuns quando configurar seus computadores.

O primeiro comando fará com que o gerenciador de atualizações verifique se há atualizações a cada 2 semanas, porque elas nem sempre vêm muito e economizam a largura de banda dos servidores Ubuntu.

Também preciso configurá-lo para que os usuários não precisem clicar para instalar atualizações, pois é cansativo toda vez que ajudo um amigo a configurar um computador.

Canguru
fonte

Respostas:

10

Primeiro, ative atualizações automáticas como esta:

sudo apt-get install unattended-upgrades

Você precisa editar sua configuração, digite

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

(substitua nanopelo seu editor de texto preferido, se desejar)

O arquivo fica assim:

Unattended-Upgrade::Allowed-Origins {
        "Ubuntu maverick-security";
//      "Ubuntu maverick-updates";
};

Como //esta linha é um comentário e não será considerada pelo programa, remova os traços para incluir atualizações de versão estáveis, além de correções de segurança. Além disso, substitua maverickpela versão do Ubuntu que você está executando.

Para definir o intervalo no qual o sistema verifica se há atualizações, edite o /etc/apt/apt.conf.d/10periodicarquivo com um editor de texto:

APT::Periodic::Update-Package-Lists "14";
APT::Periodic::Download-Upgradeable-Packages "14";
APT::Periodic::AutocleanInterval "14";
APT::Periodic::Unattended-Upgrade "14";

Neste exemplo, o sistema é atualizado a cada duas semanas.

Para uma explicação mais detalhada, consulte Atualizações Automáticas no guia do servidor Ubuntu.


Observe que a resposta de papukaija está falando sobre o intervalo em que o diálogo Gerenciador de Atualizações aparece na sua tela. Acho que não é isso que você quer, mas não tenho certeza. :)

Stefano Palazzo
fonte
Diálogos não são necessários para aparecer e ele não vai em uma linha. Se eu definir em Fontes de software duas semanas para serem verificadas, é possível que a caixa de diálogo de atualização seja exibida mais cedo ou mais tarde? É necessário que, com 1 linha, seja possível configurar que o usuário nem saiba que o sistema está sendo atualizado a cada 4 semanas e ele não precisa ver nenhuma atualização solicitando e automaticamente está instalado. Então, eu não preciso definir isso manualmente com o mouse nas fontes de software.
Canguru
Não sei se entendi você. Você pode desativar as notificações de atualização acessando Sistema → Preferências → Aplicativos de inicialização e removendo a marca de seleção em "Notificador de atualização". É isso que você quis dizer? Além disso, é claro que você pode configurá-lo para "30" em vez de "14" dias (ou qualquer quantia que você desejar)
Stefano Palazzo
E isso também pode ser feito com uma linha? Se sim, isso também é bom para fazer, se não, não é a principal coisa que eu queria. O principal é superar as configurações de fontes de software para alterar a verificação de atualizações e o que fazer. Quero colocar cheque a cada 28 dias e instalar atualizações sem perguntar nada no terminal, para que seja mais rápido.
Kangarooo
Comando uma linha na minha resposta: apt-get update && apt-get -y atualização
Luri
@luri não é isso que esta questão é sobre
Stefano Palazzo
2

Se você quer dizer atualizar tudo "atualizável", ou seja, atualizar TODOS os seus pacotes, acho que você pode agendar (dentro do cron raiz) que cada 28 dias apt-get update && apt-get upgrade -yseja executado.

Algumas pessoas têm problemas com tarefas comuns devido a um PATHambiente restritivo . Se você tiver algum problema, poderá defini-lo PATHno início do crontab -earquivo (como sugerido no CronHowto )

Além disso, para verificar se tudo está indo bem, eu registraria os resultados, assim:

root@PORTATIL:/var/log$ crontab -l
* * */2 * * /usr/share/myupdate.sh > /var/log/myupdate.log

myupdate.sh poderia ser tão simples quanto isto:

#!/bin/bash
#Testing updates
echo "$(date) Crond myupdate sarting."
apt-get update -y
apt-get upgrade -y
echo "$(date)Crond myupdate finished."
luri
fonte
Isso não funciona para mim. Quando eu recebo meus logs cron, aptitude -y safe-upgradeestá reclamando sobre a necessidade de um controle tty e, em seguida, um monte de erros de caminho. Talvez eu deva fazer uma pergunta ..
djeikyb 28/01
Você o definiu dentro do cron raiz?
luri 28/01
Sim. Ele estava falhando devido a alguns problemas de caminho diferentes, então criei um script em / root / bin, com #! / Bin / bash, e o caminho completo para o apt-get. Funciona melhor, mas ainda não é atualizado.
djeikyb
Postar os erros no log .... ou qualquer falha
Luri
Fiz um separado pergunta: askubuntu.com/q/23795/8515
djeikyb
1

Você pode alterar o intervalo entre o momento em que o gerenciador de atualizações é executado, abrindo o gconf-editor (por exemplo, com Alt + F2 e digitando gconf-editor). Então localize /apps/update-notifier.

O intervalo é definido na chave em regular_auto_launch_intervalque o valor é o número de dias. Eu acho que esse método não afeta o atualizador automático não gráfico (atualizações autônomas).

Observe que o Ubuntu pode não instalar automaticamente as atualizações de segurança devido a um bug .

papukaija
fonte
4
Esta é a versão de linha de comando desta resposta: gconftool -s /apps/update-notifier/regular_auto_launch_interval --type int 7(onde 7 é o intervalo em dias)
Stefano Palazzo
Acabei de verificar que já tinha 7 anos. Mas nas fontes de software seu conjunto é de 2 semanas. Talvez esteja em outro lugar?
Canguru
0

Eu coloquei gconftool -s /apps/update-notifier/regular_auto_launch_interval --type int 1e sua abertura todos os dias mostrando que eu não instalei atualizações. Ele abre se não houver novas atualizações? Então, fazer a atualização automática a cada 4 semanas não faria isso aparecer? Então, como fazer com a CLI instalar automaticamente as atualizações a cada verificação a cada 4 semanas? Isso é o que eu quero. Não indo a fontes de software e fazendo isso com o mouse. E, assim, é possível, pois não pode ser colocado mais de duas semanas lá.

Canguru
fonte