web-dev-qa-db-fra.com

Comment activer les mises à jour automatiques silencieuses pour tout référentiel?

J'ai lu ici comment activer les mises à jour automatiques silencieuses pour Google Chrome. Cependant, j'ai d'autres référentiels comme Spotify, Docky et d'autres pour lesquels je souhaite activer les mises à jour silencieuses.

J'essaie de faire cela dans mon système Ubuntu 10.04. Mais cette question s'applique à toutes les versions d'Ubuntu. J'ai le paquet sans surveillance (upgrades) installé.

Comment puis-je faire ceci?

41
nik90

Commencez par installer gksu:

Sudo apt-get install gksu

Le plus simple pour activer les mises à jour sans surveillance pour votre système consiste à modifier le fichier 50unattended-upgrades dans /etc/apt/apt.conf.d/ avec votre éditeur de texte préféré, par exemple:

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

Vous devez y commenter les sections commentées du bloc autorisé Origines .

Changement

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

à

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

Pour les logiciels qui ne figurent pas dans les dépôts Ubuntu que vous souhaitez mettre à jour, vous devez ajouter une archive Origin et . dans le fichier. Pour trouver ce que sont vos PPA, ouvrez le dossier /var/lib/apt/lists/, c'est-à-dire la zone de stockage des informations d'état pour chaque ressource de package. Ce que vous recherchez, ce sont les fichiers qui se terminent par . Libérez dans le nom.

Ouvrez-en un avec votre éditeur de texte, c'est-à-dire pour 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 est évidente (Origin: Google, Inc.) et l'archive sera celle qui se trouve sous la ligne Suite (Suite: stable).

Si Origin ou Suite est manquant, il s'agira de la chaîne vide. Mais notez que si les deux sont manquants, il ne sera probablement pas possible d'utiliser cette source avec des mises à niveau sans surveillance sans inclure d'autres sources avec le même problème.

Après avoir noté ces 2 lignes, vous devez éditer le fichier 50unattended-upgrades et les ajouter à l’aide de ce format "<Origin>:<archive>"; of pour cet exemple sakis "Google\, Inc.:stable";.

Origine de Google Chrome est un peu délicate, car elle comporte un espace, un point final et une virgule, mais la plupart est activée les fichiers seront faciles à lire.

Comme autre exemple, source du noeud JS spécifie une origine (Node Source) mais pas une archive; afin que vous puissiez le faire correspondre avec "Node Source:";.

Les origines autorisées sont mises en correspondance à l'aide de caractères génériques de style shell (plus précisément, avec Python fnmatch () ). Si vous êtes assez prudent pour ne pas inclure les sources en conflit, il est possible d'écrire des choses comme "Node *:*";.


N'oubliez pas de faire une sauvegarde de votre fichier 50unattended-upgrades avant de le modifier, faites-le avec Sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak.

Pour tester les modifications apportées au fichier, vous pouvez utiliser Sudo unattended-upgrades avec les paramètres --dry-run et --debug.

--dry-run lancera un cycle de mises à jour sans assistance, sauf qu'il n'installera pas vraiment les mises à niveau, mais vérifiera et vérifiera que tout va bien.

--debug activera le mode prolixe.

Vous pouvez toujours vérifier les journaux pour unattended-upgrades à /var/log/unattended-upgrades/unattended-upgrades.log.


Vous pouvez modifier la configuration des mises à niveau sans surveillance en modifiant le fichier /etc/apt/apt.conf.d/10periodic. Les options de configuration se trouvent dans l'en-tête de script /etc/cron.daily/apt. Lisez-les pour configurer la fréquence des mises à niveau sans assistance.

65
Bruno Pereira

Approche automatisée pour la réponse de @Bruno Pereira: (envisagez de mettre en vedette le dépôt github si vous trouvez la réponse utile.)

Lien de code: https://github.com/abhigenie92/unattended_upgrades_repos

  • Vérifiez les dépôts pour ajouter:

    $ 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
    
  • Maintenant, éditez /etc/apt/apt.conf.d/50unattended-upgrades pour les inclure:

    // 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";
    };
    ....
    ....
    
  • Vérifiez si elles sont incluses:

    $ 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
    
13
Abhishek Bhatia

Editer /etc/apt/apt.conf.d/50unattended-upgrades, ajoutez ce qui suit:

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

Cela permettra des mises à niveau sans surveillance pour tous les packages.

5
Zachary West

Il existe des instructions pour forcer une nouvelle exécution à forcer cron à démarrer la mise à jour automatique à l’installation suivante lien . La procédure pour arrêter cron est la suivante

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/*

et redémarrer cron pour que la mise à jour automatique se produise maintenant (ou du moins dans quelques minutes)

Sudo service cron start
Sudo anacron -fn

Comment ça marche

Plusieurs choses vont déclencher son exécution.

  • Il est lancé à partir de l'exécution de /etc/cron.daily par cron, plus précisément /etc/cron.daily/apt. Cron exécute /etc/cron.daily à 6h25 (voir /etc/crontab)

  • Anacron fonctionne de parvenu? et il se déclenchera /etc/cron.daily après 5 minutes de disponibilité (voir /etc/anacrontab)

    Remarque: APT::Periodic::RandomSleep peut être défini dans /etc/apt/apt.conf.d/10periodic, mais la valeur par défaut est 1800s (30 minutes); aucune mise à jour ne peut donc se produire jusqu'à 30 minutes après l'exécution de /etc/cron.daily/apt.

Journal

Si cela fonctionne, les choses devraient être enregistrées dans ce dossier, /var/log/unattended-upgrades.

3
Eleanor Ellis