apt-get upgrade automatischer Neustart der Dienste

apt-get upgrade automatischer Neustart der Dienste

Ich habe ein unbeaufsichtigtes Skript zum Installieren von Servern. Am Anfang des Skripts steht ein sudo apt-get dist-upgrade --yes. Das dist-Upgrade hat am Ende einen unangenehmen Benutzereingabebildschirm, der zum Neustart der Dienste auffordert:
Bildbeschreibung hier eingeben

Ist es möglich, Neustarts des Dienstes automatisch zu akzeptieren oder diesen Bildschirm zu deaktivieren? Es macht mein ganzes Skript kaputt. Außerdem befürchte ich, dass mein Server beim Aktualisieren irgendwann hängen bleiben könnte ...

gleiches Ergebnis mit apt-get upgrade

edit: Ich habe es erfolglos versucht:

#!/bin/bash
sudo apt-get update
sudo apt-get remove apt-listchanges --assume-yes --force-yes &&

#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&

#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&

echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&

echo "executing autoremove" &&
sudo apt-get -fuy --force-yes autoremove &&

echo "executing clean" &&
sudo apt-get --force-yes clean &&

echo "executing update" &&
sudo apt-get update &&

echo "executing upgrade" &&
sudo apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuyq upgrade &&

echo "executing dist-upgrade" &&
sudo apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuyq dist-upgrade

Antwort1

Andere Antworten wurden einfach needrestartkomplett übersprungen.

Aber die UmgebungsvariableNEEDRESTART_MODEermöglicht die Angabe eines Modus. Und wenn Sie „(a)utomatisch“ wählen, können Sie davon profitieren, needrestartohne durch die Eingabeaufforderung blockiert zu werden:

sudo NEEDRESTART_MODE=a apt-get dist-upgrade --yes

Antwort2

Wie andere bereits erwähnt haben, liegt das Problem in diesem Fall beim needrestartBefehl, der jetzt Teil des apt-get-Upgrade-Prozesses in Ubuntu ist (insbesondere 22.04, das ich verwende). Standardmäßig ist dies auf den „interaktiven“ Modus eingestellt, was zur Unterbrechung von Skripten führt.

Um dieses Verhalten zu ändern, können wir die /etc/needrestart/needrestart.confDatei bearbeiten und die Zeile ändern:

#$nrconf{restart} = 'i';

Zu

$nrconf{restart} = 'a';(wenn wir die Dienste automatisch neu starten möchten) oder $nrconf{restart} = 'l';einfach die Dienste auflisten, die neu gestartet werden müssen.

Wenn Sie ein Skript ausführen und diese Bearbeitung ohne Verwendung eines interaktiven Editors wie vim vornehmen möchten, können Sie dies mit sedetwa folgendem Befehl tun:

sudo sed -i 's/#$nrconf{restart} = '"'"'i'"'"';/$nrconf{restart} = '"'"'a'"'"';/g' /etc/needrestart/needrestart.conf

Es sieht aufgrund der einfachen Anführungszeichen in der Konfigurationsdatei und der Art und Weise, wie sed einfache Anführungszeichen verarbeitet, hässlich aus, aber es funktioniert. Bitte hinterlassen Sie einen Kommentar, wenn Sie einen besser aussehenden Ansatz haben.

Antwort3

Anstatt sed zu verwenden oder die Hauptkonfiguration zu bearbeiten, fügen Sie Ihre eigene Konfigurationsdatei in /etc/needrestart/conf.d/no-prompt.conf hinzu:

$nrconf{restart} = 'a';

Antwort4

Alternativ kann ichdenkenSie können dieneedrestartPaket selbst.

sudo apt-get remove needrestart

Ich verwende dies für die Bereitstellung von AWS EC2 unter Ubuntu 22.04. Aus irgendeinem Grund export DEBIAN_FRONTEND=noninteractiveschien es nicht zu funktionieren.

verwandte Informationen