Unbeaufsichtigte Upgrades von einem Shell-Skript aus aktivieren

17

Ich habe ein Shell-Skript, um neue virtuelle Ubuntu-Maschinen für meine Zwecke automatisch zu konfigurieren. Ich möchte, dass dieses Skript installiert und aktiviert unattended-upgradeswird, kann es jedoch ohne Benutzerinteraktion nicht ausführen.

Die übliche Art, Upgrades zu aktivieren, ist dpkg-reconfigure unattended-upgrades, aber das ist natürlich interaktiv. Das nicht interaktive Front-End vermeidet es, Fragen zu stellen, und das Text-Front-End scheint fest entschlossen zu sein, seine E / A mit tty und nicht mit stdin / stdout durchzuführen.

Grant Watson
quelle
1
Ich habe dieses Tool bisher noch nicht verwendet, aber es sieht so aus, als würde es eine 1 in die beiden Zeilen in der Datei /etc/apt/apt.conf.d/20auto-upgrades schreiben. Wenn Sie diese Datei manuell schreiben, funktioniert sie dann?
mfisch

Antworten:

20

Erstellen Sie einfach eine Kopie von /etc/apt/apt.conf.d/20auto-upgrades, nachdem Sie diese nach Ihren Wünschen konfiguriert haben, und legen Sie sie auf Ihrem Zielcomputer ab. Sie könnten es in Ihr Skript einbetten, oder Sie könnten es von einem Server aus synchronisieren oder einspielen, oder was auch immer.

Im Grunde könnte Ihr Skript also so etwas tun:

apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart

Es gibt wirklich keinen Grund, sich mit dem Skript dpkg-reconfigure anzulegen.

Wenn Sie die conf-Datei nicht von einem Remote-Server abrufen möchten, ist sie SEHR kurz und einfach - die Standardversion, die nur Sicherheitsupdates abruft und installiert, sieht folgendermaßen aus:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Sie können diese Zeilen also direkt in die Konfigurationsdatei mit folgendem Befehl zurückschreiben:

echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades
Jim Salter
quelle
1

Wenn Sie dpkg-reconfigure verwenden möchten, können Sie den Wert mit "debconf-set-selections" festlegen und dann nicht interaktiv neu konfigurieren.

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
user497484
quelle
0

Sie müssen sudo verwenden, um in zu echo /etc/apt/apt.conf.d/20auto-upgrades

if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
    sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
    sudo rm /etc/apt/apt.conf.d/20auto-upgrades
    echo "APT::Periodic::Update-Package-Lists \"1\";
    APT::Periodic::Download-Upgradeable-Packages \"1\";
    APT::Periodic::AutocleanInterval \"30\";
    APT::Periodic::Unattended-Upgrade \"1\";" | sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi
Arturo
quelle
0
dpkg-reconfigure -f noninteractive unattended-upgrades
aexl
quelle
0

Ich würde vorschlagen, Konfigurationsparameter einzufügen, um unbeaufsichtigte Upgrades zu konfigurieren.

sudo touch /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Update-Package-Lists "1"" >> /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Unattended-Upgrade "1" " >> /etc/apt/apt.conf.d/20auto-upgrades

Ebenso können Sie in der conf-Datei Parameter gemäß Ihren Anforderungen konfigurieren / hinzufügen /etc/apt/apt.conf.d/50unattended-upgrades .

Vergessen Sie nicht, den Dienst neu zu starten, um die Änderungen zu übernehmen.

/etc/init.d/unattended-upgrades restart
Ketan Patel
quelle