Come abilitare gli aggiornamenti automatici silenziosi per qualsiasi repository?


44

Ho letto qui come abilitare gli aggiornamenti automatici silenziosi per Google Chrome. Tuttavia, ho altri repository come spotify, docky e altri per i quali vorrei abilitare gli aggiornamenti silenziosi.

Sto provando a farlo nel mio sistema Ubuntu 10.04. Ma questa domanda si applica a tutte le versioni di Ubuntu. Ho installato il pacchetto di aggiornamenti automatici .

Come posso fare questo?


Desideri aggiornamenti di sicurezza silenziosi . o TUTTI gli aggiornamenti installati senza intervento? Perché?
david6

1
Praticamente tutti gli aggiornamenti, inclusi anche i repository degli utenti.
nik90,

Risposte:


66

Innanzitutto, installa gksu:

sudo apt-get install gksu

Il modo più semplice per abilitare gli aggiornamenti automatici per il tuo sistema è modificare il file 50unattended-upgradesall'interno /etc/apt/apt.conf.d/con il tuo editor di testo preferito, ad esempio:

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

In esso è necessario commentare le sezioni commentate del blocco Origini consentite

Modificare

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

a

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

Per i software che non si trovano nei repository di Ubuntu che si desidera aggiornare è necessario aggiungere un'origine e un archivio al file. Per trovare quelli che sono per i tuoi PPA, apri la cartella /var/lib/apt/lists/, ovvero l'area di archiviazione per le informazioni sullo stato di ciascuna risorsa del pacchetto. Quello che stai cercando sono i file che terminano con Release nel nome.

Apri uno con il tuo editor di testo, ad esempio per 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.

L'origine è ovvia ( Origin: Google, Inc.) e l'archivio sarà quello che è sotto la linea Suite ( Suite: stable).

Se uno Origino Suitemanca, allora saranno la stringa vuota. Tuttavia, se mancano entrambi, probabilmente non sarà possibile utilizzare quella fonte con aggiornamenti automatici senza includere altre fonti con lo stesso problema.

Dopo aver annotato quelle 2 righe, è necessario modificare il 50unattended-upgradesfile e aggiungere le righe usando questo formato "<origin>:<archive>";per questo esempio "Google\, Inc.:stable";.

L'origine di Google Chrome è un po 'complicata perché ha uno spazio un punto finale e una virgola ma la maggior parte dei file di Release sarà facile da leggere.

Come altro esempio, l'origine Nodo JS specifica un'origine ( Node Source) ma non un archivio; così puoi abbinarlo a "Node Source:";.

Le origini consentite vengono abbinate usando i caratteri jolly in stile shell (più specificamente, con fnmatch di Python () ). Se stai abbastanza attento a non includere fonti in conflitto è possibile scrivere cose come "Node *:*";.


Non dimenticare di fare un backup del tuo 50unattended-upgradesfile prima di modificarlo, fallo con sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak.

Per testare le modifiche apportate al file è possibile utilizzare sudo unattended-upgradescon i parametri --dry-rune --debug.

--dry-run eseguirà un ciclo di aggiornamenti automatico, tranne per il fatto che non installerà realmente gli aggiornamenti, ma controlla e verifica che tutto sia a posto.

--debug abiliterà la modalità dettagliata.

Puoi sempre controllare i log per unattended-upgradesa /var/log/unattended-upgrades/unattended-upgrades.log.


È possibile modificare la configurazione degli aggiornamenti non presidiati modificando il file /etc/apt/apt.conf.d/10periodic, le opzioni per la configurazione sono nell'intestazione dello /etc/cron.daily/aptscript. Leggili per configurare la frequenza degli aggiornamenti non presidiati.


2
Grazie ... Molto dettagliato! posso chiederti perché hai inserito un \ dopo Google?
nik90,

A causa dei caratteri speciali nell'origine, è un carattere di escape per la virgola. La maggior parte delle origini che trovi non avrà questo.
Bruno Pereira,

1
@jos No, è così che funzionerà, --dry-runcontrollerà se negli elenchi aggiornati ci sono aggiornamenti disponibili e li manda in output, gli elenchi si aggiornano tramite qualunque sia la tua configurazione /etc/cron.daily/apt, eseguendolo manualmente non aggiorna gli elenchi che penso.
Bruno Pereira,

1
Cosa devo mettere come nome dell'archivio quando il file di rilascio corrispondente non elenca una Suite?
hsivonen,

2
Controlla anche l'approccio automatizzato qui: askubuntu.com/a/792621/417607
Abhishek Bhatia,

14

Approccio automatizzato per la risposta di @Bruno Pereira: (Ti preghiamo di prendere in considerazione il repository github se trovi utile la risposta.)

Link al codice: https://github.com/abhigenie92/unattended_upgrades_repos

  • Controlla i repository per aggiungere:

    $ 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
    
  • Ora modifica /etc/apt/apt.conf.d/50unattended-upgradesper includerli:

    // 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";
    };
    ....
    ....
    
  • Verifica se sono inclusi:

    $ 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
    

@ andy.holmes benvenuti, per favore considera di recitare nel repository github, se possibile. Link- github.com/abhigenie92/unattended_upgrades_repos
Abhishek Bhatia

Potresti anche voler modificare il modo in cui dpkg tratta i pacchetti che tentano di modificare i file di configurazione: unix.stackexchange.com/questions/138751/…
deoren,

Questo script Python è eccellente, tuttavia ho dovuto modificare ciò che README.md mi ha suggerito per gli aggiornamenti automatici di 50 per il mio tratto in esecuzione di Raspberry Pi. Specificare l'origine consentita come, ad esempio, "Raspberry:stable";non ha funzionato. Invece ho usato, ad esempio,"o=Raspberry, a=stable";
cfogelberg

5

Modifica /etc/apt/apt.conf.d/50unattended-upgrades, aggiungi quanto segue:

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

Ciò consentirà aggiornamenti automatici per tutti i pacchetti.


Sì, grazie per la risposta chiara e concisa. Ma ci sono pacchetti che hanno origin:'', ad esempio datadog-agent da site:'apt.datadoghq.com'. In tal caso sarebbe anche necessario aggiungere "origin=";per non saltare i pacchetti con origine vuota. Ma allora è meglio usare solo "site=*";invece di "origin=*";.
Paul Tobias,

Ho aggiunto il mio repository in un file /etc/apt/sources.list.d/my_repo.list, ma non aggiorna il pacchetto. Funziona manualmente con sudo apt update. Qualche idea su come?
Sander,

Utilizza le stesse fonti di un aggiornamento manuale, ovvero ignora le fonti disabilitate?
Silicomancer,

3

Ci sono istruzioni per forzare una seconda esecuzione a far avviare cron l'aggiornamento automatico al seguente link . La procedura per interrompere cron è questa

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 riavviare cron per fare in modo che l'aggiornamento automatico avvenga ora (o almeno entro pochi minuti) è

sudo service cron start
sudo anacron -fn

Come funziona

Diverse cose lo attiveranno.

  • Viene espulso dalla gestione di /etc/cron.dailycron, in particolare /etc/cron.daily/apt. Cron funziona /etc/cron.dailyalle 6.25 (vedi /etc/crontab)

  • Anacron corre da inizio? e si spegnerà /etc/cron.dailydopo 5 minuti di uptime (vedi /etc/anacrontab)

    APT::Periodic::RandomSleepÈ possibile impostare la nota /etc/apt/apt.conf.d/10periodic, ma il valore predefinito è 1800s (30 minuti), quindi non possono verificarsi aggiornamenti fino a 30 minuti dopo l' /etc/cron.daily/aptesecuzione.

Login

Se funziona cose dovrebbero fare il login in questa cartella, /var/log/unattended-upgrades.


Questo è stato particolarmente utile per me poiché il mio provider di hosting virtuale ha pensato che sarebbe stata una buona idea rimuovere /etc/cron.daily/aptdall'installazione predefinita di Ubuntu 12.04 - quindi gli aggiornamenti APT automatici non stavano avvenendo :-(. ServerFault risponde serverfault.com/a/568329/ 95570 ha fornito dettagli su come ricreare quel file
Alex Dupuy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.