Como habilitar atualizações automáticas silenciosas para qualquer repositório?

36

Eu li aqui como Ativar atualizações automáticas silenciosas para o Google Chrome. No entanto, tenho outros repositórios como spotify, docky e outros para os quais gostaria de ativar as atualizações silenciosas.

Estou tentando fazer isso no meu sistema Ubuntu 10.04. Mas esta questão se aplica a todas as versões do Ubuntu. Eu tenho o pacote de upgrades autônomos instalado.

Como posso fazer isso?

    
por nik90 14.12.2011 / 23:47

4 respostas

56

Primeiro, instale gksu :

sudo apt-get install gksu

O mais fácil de ativar atualizações automáticas para o seu sistema é editar o arquivo 50unattended-upgrades dentro de /etc/apt/apt.conf.d/ com seu editor de texto favorito, por exemplo:

gksu gedit /etc/apt/apt.conf.d/50unattended-upgrades

Nele você precisa comentar as seções comentadas do bloco Origens permitidas

Alterar

Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
//      "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
};

para

Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
};

Para um software que não está nos repositórios do Ubuntu que você gostaria de atualizar, você precisa adicionar um origin e archive ao arquivo. Para descobrir o que são para seus PPAs, abra a pasta /var/lib/apt/lists/ , que é a área de armazenamento das informações de estado de cada recurso de pacote. O que você está procurando são os arquivos que terminam com Release no nome.

Abra um com o seu editor de texto, ou seja, para o Google Chrome:

  

gedit /var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release

Origin: Google, Inc.
Label: Google
Suite: stable
Codename: stable
Version: 1.0
Date: Thu, 17 Nov 2011 19:09:01 +0000
Architectures: i386 amd64
Components: main
Description: Google chrome-linux repository.

A origem é óbvia ( Origin: Google, Inc. ) e o arquivo será o que estiver sob a linha Suite ( Suite: stable ).

Se Origin ou Suite estiver faltando, eles serão a string vazia. Mas note que se ambos estiverem faltando, provavelmente não será possível usar essa fonte com atualizações automáticas sem incluir outras fontes com o mesmo problema.

Depois de notar essas duas linhas, você precisa editar o arquivo 50unattended-upgrades e adicionar as linhas usando este formato "<origin>:<archive>"; para este exemplo sake "Google\, Inc.:stable"; .

A origem do Google Chrome é um pouco complicada porque tem um espaço, um ponto final e uma vírgula, mas a maioria dos arquivos Release será fácil de ler.

Como outro exemplo, fonte JS do nó especifica uma origem ( Node Source ), mas não um arquivo; então você pode combiná-lo com "Node Source:"; .

Origens permitidas é correspondida usando caracteres curinga (mais especificamente, com fnmatch do Python () ). Se você for cuidadoso o suficiente para não incluir fontes conflitantes, é possível escrever coisas como "Node *:*"; .

Não se esqueça de fazer um backup do seu arquivo 50unattended-upgrades antes de editá-lo, faça isso com sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak .

Para testar as alterações feitas no arquivo, você pode usar sudo unattended-upgrades com os parâmetros --dry-run e --debug .

--dry-run executará um ciclo de upgrades autônomos, exceto que não instalará realmente as atualizações, apenas verificará e verificará se tudo está OK.

--debug ativará o modo detalhado.

Você sempre pode verificar os registros de unattended-upgrades at /var/log/unattended-upgrades/unattended-upgrades.log .

Você pode alterar a configuração das atualizações autônomas editando o arquivo /etc/apt/apt.conf.d/10periodic , as opções para a configuração estão no cabeçalho do script /etc/cron.daily/apt . Leia-os para configurar a frequência das atualizações autônomas.

    
por Bruno Pereira 15.12.2011 / 00:17
11

Abordagem automatizada para a resposta de @Bruno Pereira: (Por favor, considere estrelar o repositório github se você achar a resposta útil.)

Link de código: link

  • Verifique os repositórios para adicionar:

    $ python automatic_upgrade.py 
    Add repos:
    "Ubuntu:xenial";
    "LP-PPA-kubuntu-ppa-backports:xenial";
    "LP-PPA-tuxonice:xenial";
    "LP-PPA-webupd8team-sublime-text-3:xenial";
    
    Skipping files due to not present origin or suite. Or origin being a url.:
    packagecloud.io_slacktechnologies_slack_debian_dists_jessie_InRelease
    tiliado.eu_nuvolaplayer_repository_deb_dists_xenial_InRelease
    
  • Agora edite /etc/apt/apt.conf.d/50unattended-upgrades para incluí-los:

    // Automatically upgrade packages from these (origin:archive) pairs
    Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        "${distro_id}:${distro_codename}-updates";
        "${distro_id}:${distro_codename}-proposed";
        "${distro_id}:${distro_codename}-backports";
      "Ubuntu:xenial";
      "LP-PPA-kubuntu-ppa-backports:xenial";
      "LP-PPA-tuxonice:xenial";
      "LP-PPA-webupd8team-sublime-text-3:xenial";
    };
    ....
    ....
    
  • Verifique se eles estão incluídos:

    $ sudo unattended-upgrade --dry-run --debug
    Initial blacklisted packages: 
    Initial whitelisted packages: 
    Starting unattended upgrades script
    Allowed origins are: ['o=Ubuntu,a=xenial-security', 'o=Ubuntu,a=xenial-updates', 'o=Ubuntu,a=xenial-proposed', 'o=Ubuntu,a=xenial-backports', 'o=Ubuntu,a=xenial', 'o=LP-PPA-kubuntu-ppa-backports,a=xenial', 'o=LP-PPA-tuxonice,a=xenial', 'o=LP-PPA-webupd8team-sublime-text-3,a=xenial']
    pkgs that look like they should be upgraded: 
    Fetched 0 B in 0s (0 B/s)                                                                                  
    fetch.run() result: 0
    blacklist: []
    whitelist: []
    No packages found that can be upgraded unattended and no pending auto-removals
    
por Abhishek Bhatia 29.06.2016 / 08:41
3

Há instruções para forçar uma nova execução para que o cron inicie a atualização automática no seguinte link . O procedimento para parar o cron é este

sudo service anacron stop
sudo service cron stop
sudo rm -rf /var/run/unattend* /var/run/cron* /var/run/anacron*
sudo rm -rf /var/lib/apt/periodic/*

e para reiniciar o cron para que a atualização automática aconteça agora (ou pelo menos dentro de alguns minutos) é

sudo service cron start
sudo anacron -fn

Como funciona

Várias coisas vão ativá-lo para ser executado.

  • Ele é disparado da execução de /etc/cron.daily pelo cron, especificamente /etc/cron.daily/apt . Cron executa /etc/cron.daily às 6h05 (ver /etc/crontab )

  • Anacron é executado a partir de upstart? e disparará /etc/cron.daily após 5 minutos de tempo de atividade (veja /etc/anacrontab )

    Nota APT::Periodic::RandomSleep pode ser definido em /etc/apt/apt.conf.d/10periodic , mas o padrão é 1800s (30 mins), então não atualizações podem acontecer até 30 minutos depois que /etc/cron.daily/apt for executado.

Log

Se funcionar, as coisas devem ser registradas nesta pasta, /var/log/unattended-upgrades .

    
por Eleanor Ellis 01.08.2013 / 21:50
2

Editando /etc/apt/apt.conf.d/50unattended-upgrades , adicione o seguinte:

Unattended-Upgrade::Origins-Pattern {
        "origin=*";
};

Isso permitirá atualizações autônomas para todos os pacotes.

    
por Zachary West 11.04.2018 / 01:35