Wie aktiviere ich automatische automatische Updates für ein Repository?


43

Ich habe hier gelesen , wie Sie stille automatische Updates für Google Chrome aktivieren können. Ich habe jedoch andere Repositorys wie spotify, docky und andere, für die ich stille Updates aktivieren möchte.

Ich versuche dies in meinem Ubuntu 10.04 System zu tun. Diese Frage gilt jedoch für alle Ubuntu-Versionen. Ich habe das Paket für unbeaufsichtigte Upgrades installiert.

Wie kann ich das machen?


Möchten Sie stille Sicherheitsupdates . oder ALLE Updates ohne Eingriff installiert? Warum?
David6

1
So ziemlich alle Updates, einschließlich der Benutzer-Repositorys.
Nik90

Antworten:


66

Installieren Sie zuerst gksu:

sudo apt-get install gksu

Die einfachste ermöglichen unbeaufsichtigtes Updates für Ihr System ist , um die Datei zu bearbeiten 50unattended-upgradesinnen /etc/apt/apt.conf.d/mit Ihrem bevorzugten Texteditor, zum Beispiel:

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

Darin müssen Sie die kommentierten Abschnitte des Blockes " Allowed Origins" auskommentieren

Veränderung

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

zu

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

Für Software, die sich nicht auf den Ubuntu-Repos befindet, die Sie aktualisieren möchten, müssen Sie der Datei einen Ursprung und ein Archiv hinzufügen . Um herauszufinden, was diese für Ihre PPAs sind, öffnen Sie den Ordner /var/lib/apt/lists/, der den Speicherbereich für Statusinformationen für jede Paketressource darstellt. Was Sie suchen, sind die Dateien, die mit Release im Namen enden .

Öffne eines mit deinem Texteditor, zB für 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.

Der Ursprung ist offensichtlich ( Origin: Google, Inc.) und das Archiv wird das sein, was unter der Zeile Suite ( Suite: stable) steht.

Wenn einer der beiden fehlt Originoder Suitefehlt, handelt es sich um die leere Zeichenfolge. Wenn jedoch beide fehlen, ist es wahrscheinlich nicht möglich, diese Quelle mit unbeaufsichtigten Upgrades zu verwenden, ohne andere Quellen mit demselben Problem einzuschließen.

Nachdem Sie diese 2 Zeilen bemerkt müssen Sie die zu bearbeitende 50unattended-upgradesDatei und die Linien in dieses Format hinzufügen "<origin>:<archive>";von diesen Beispielen willen "Google\, Inc.:stable";.

Der Ursprung von Google Chrome ist etwas knifflig, da ein Leerzeichen, ein Endpunkt und ein Komma enthalten sind. Die meisten Release- Dateien sind jedoch einfach zu lesen.

In einem anderen Beispiel gibt die Node JS-Quelle einen Ursprung ( Node Source), jedoch kein Archiv an. so können Sie es mit abgleichen "Node Source:";.

Zugelassene Ursprünge werden mit Platzhaltern im Shell-Stil abgeglichen (genauer gesagt mit Pythons fnmatch () ). Wenn Sie vorsichtig genug sind, um widersprüchliche Quellen nicht einzuschließen, ist es möglich, Dinge wie zu schreiben "Node *:*";.


Vergessen Sie nicht, eine Sicherungskopie Ihrer 50unattended-upgradesDatei zu erstellen, bevor Sie sie bearbeiten sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak.

Um die an der Datei vorgenommenen Änderungen zu testen, können Sie sudo unattended-upgradesdie Parameter --dry-runund verwenden --debug.

--dry-run führt einen unbeaufsichtigten Upgradezyklus durch, außer dass die Upgrades nicht wirklich installiert werden. Überprüfen Sie nur, ob alles in Ordnung ist.

--debug aktiviert den ausführlichen Modus.

Sie können jederzeit überprüfen Sie die Protokolle unattended-upgradesan /var/log/unattended-upgrades/unattended-upgrades.log.


Sie können die Konfiguration der unbeaufsichtigten Upgrades ändern, indem Sie die Datei bearbeiten /etc/apt/apt.conf.d/10periodic. Optionen für die Konfiguration finden Sie im /etc/cron.daily/aptSkript-Header. Lesen Sie diese, um die Häufigkeit der unbeaufsichtigten Upgrades zu konfigurieren.


2
Vielen Dank ... Sehr detailliert! Darf ich fragen, warum Sie ein \ nach Google setzen?
Nik90

Aufgrund der Sonderzeichen im Ursprung ist dies ein Escapezeichen für das Komma. Die meisten Ursprünge, die Sie finden, werden das nicht haben.
Bruno Pereira

1
@jos Nein, so funktioniert --dry-runes. Überprüft, ob in den aktualisierten Listen Updates verfügbar sind, und gibt sie an Sie aus. Die Listen werden über die Konfiguration aktualisiert. Wenn Sie /etc/cron.daily/aptsie manuell ausführen, werden die Listen meiner Meinung nach nicht aktualisiert.
Bruno Pereira

1
Was soll ich als Archivnamen angeben, wenn in der entsprechenden Release-Datei keine Suite aufgeführt ist?
Hsivonen

2
Bitte überprüfen Sie auch den automatisierten Ansatz hier: askubuntu.com/a/792621/417607
Abhishek Bhatia

14

Automatisierter Ansatz für die Antwort von @Bruno Pereira: (Wenn Sie die Antwort nützlich finden, sollten Sie in Betracht ziehen, das Github-Repo mit einem Stern zu versehen.)

Code-Link: https://github.com/abhigenie92/unattended_upgrades_repos

  • Überprüfen Sie die Repositorys, um Folgendes hinzuzufügen:

    $ 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
    
  • Bearbeiten Sie /etc/apt/apt.conf.d/50unattended-upgradessie jetzt, um sie einzuschließen :

    // 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";
    };
    ....
    ....
    
  • Überprüfen Sie, ob sie enthalten sind:

    $ 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 willkommen, bitte erwägen Sie, das Github-Repository zu markieren, wenn dies möglich ist. Link- github.com/abhigenie92/unattended_upgrades_repos
Abhishek Bhatia

Möglicherweise möchten Sie auch ändern, wie dpkg Pakete behandelt, die versuchen, Konfigurationsdateien zu ändern: unix.stackexchange.com/questions/138751/…
deoren

Dieses Python-Skript ist ausgezeichnet, ich musste jedoch die Vorschläge von README.md für 50 unbeaufsichtigte Upgrades für meine Raspberry Pi-Laufstrecke ändern. Die Angabe des erlaubten Ursprungs als zB "Raspberry:stable";hat nicht funktioniert. Stattdessen habe ich zB"o=Raspberry, a=stable";
cfogelberg

5

Bearbeiten /etc/apt/apt.conf.d/50unattended-upgrades, fügen Sie Folgendes hinzu:

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

Dies ermöglicht unbeaufsichtigte Upgrades für alle Pakete.


Ja, danke für die klare und prägnante Antwort. Es gibt aber auch Pakete, die origin:''zum Beispiel Datadog-Agent aus haben site:'apt.datadoghq.com'. In diesem Fall müssten auch "origin=";Pakete mit leerem Ursprung hinzugefügt werden, um sie nicht zu überspringen. Aber dann ist es besser, einfach "site=*";statt zu verwenden "origin=*";.
Paul Tobias

Ich habe mein eigenes Repository in eine Datei in hinzugefügt /etc/apt/sources.list.d/my_repo.list, aber es nicht das Paket aktualisieren. Manuell funktioniert es mit sudo apt update. Irgendeine Ahnung wie?
Sander

Verwendet dies dieselben Quellen wie ein manuelles Update, dh werden deaktivierte Quellen ignoriert?
Silicomancer

3

Es gibt Anweisungen zum Erzwingen einer erneuten Ausführung, damit cron das automatische Update unter dem folgenden Link startet . Das Verfahren zum Stoppen von Cron ist das folgende

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

und cron neu zu starten, damit das automatische Update jetzt (oder zumindest innerhalb weniger Minuten) erfolgt

sudo service cron start
sudo anacron -fn

Wie es funktioniert

Mehrere Dinge werden es zum Laufen bringen.

  • Es wird /etc/cron.dailyspeziell von cron ausgelöst /etc/cron.daily/apt. Cron fährt /etc/cron.dailyum 6.25 Uhr (siehe /etc/crontab)

  • Anacron läuft von Anfang an? und es wird /etc/cron.dailynach 5 Minuten Betriebszeit ausgelöst (siehe /etc/anacrontab)

    Hinweis APT::Periodic::RandomSleepkann eingestellt werden /etc/apt/apt.conf.d/10periodic, der Standardwert ist jedoch 1800s (30 Minuten), so dass keine Aktualisierungen bis 30 Minuten nach den /etc/cron.daily/aptLäufen erfolgen können.

Log

Wenn es funktioniert, sollten die Dinge in diesem Ordner protokolliert werden /var/log/unattended-upgrades.


Dies war besonders nützlich für mich, da mein virtueller Hosting-Anbieter dachte, es wäre eine gute Idee, /etc/cron.daily/aptvon der Ubuntu 12.04-Standardinstallation zu entfernen - daher fanden keine automatischen APT-Updates statt :-(. Die ServerFault-Antwort serverfault.com/a/568329/ 95570 lieferte Details zum erneuten Erstellen dieser Datei.
Alex Dupuy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.