Kann ich ein unbeaufsichtigtes oder unbeaufsichtigtes Release-Upgrade durchführen?

31

Wie aktualisiere ich auf eine neue Ubuntu-Version, ohne auf Eingabeaufforderungen reagieren zu müssen?

Ich bin jetzt am 12.04 und möchte den 12.10 installieren. Wenn ich das Update starte, lädt es normalerweise Dinge herunter, stellt eine Frage, installiert ein bisschen, stellt eine Frage usw. Ich lasse es über Nacht und stelle manchmal fest, dass es fast keine Fortschritte beim Update gemacht hat. Ich möchte den Prozess einfach abbrechen, weggehen und nach ein paar Stunden fertig sein. Ich bin damit einverstanden, Konfigurationsdateien in / etc und so weiter automatisch zu aktualisieren. So starten Sie ein unbeaufsichtigtes Upgrade?

jdm
quelle

Antworten:

42

Der folgende Befehl wird ohne Eingabeaufforderung auf die neue stabile Version aktualisiert:

do-release-upgrade -f DistUpgradeViewNonInteractive

Der folgende Befehl wird ohne Eingabeaufforderung auf die aktuelle Entwicklungsversion aktualisiert:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

Ich habe es nicht getestet, aber es scheint, dass es nur die Standardaktion ausführt, wenn eine Frage auftaucht. Außerdem werden alle Skripte zeitlich begrenzt, wenn sie zu lange hängen.

Möglicherweise müssen dpkg-reconfigureSie die Option anschließend verwenden, wenn Sie mit der Konfiguration bestimmter Pakete nicht zufrieden sind, aber die meiste Zeit sollten Sie in Ordnung sein.

Quelle: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ . Im Link gibt es auch andere Möglichkeiten, dies zu tun.

jdm
quelle
Bitte vermeiden Sie Verweise auf Inhalte von Links, fügen Sie jedoch auch die relevanten Informationen hinzu, um zu verhindern, dass Informationen verloren gehen, wenn die Site nicht erreichbar ist.
k0pernikus
Ich tat dies und alles schien zu funktionieren, aber nach einem Neustart bekam ich nur einen Grub-Fehler , so dass Sie nach diesem unbeaufsichtigten Upgrade anscheinend mehr Grub-Konfiguration hinzufügen müssen. vielleicht mit sudo apt-get install grub-emu?
Rubo77
6
Dies funktioniert nicht bei Trusty => Xenial. Sie erhalten weiterhin Fragen zu geänderten / etc-Dateien.
Willem
Sollte dies nicht mit sudo ausgeführt werden?
Cerin
Bei Fragen zu geänderten / etc-Dateien gibt es hier eine coole Lösung: awaseroot.wordpress.com/2012/04/29/… . Führen Sie den Befehl mit 'echo "y \ n \ ny \ ny \ ny \ n" | aus 'vor dem Do-Release-Upgrade. Sie liefert die Antworten auf die Fragen. Fügen Sie viele Antworten hinzu, falls sich in / etc viele geänderte Dateien befinden.
Nmgeek
6

Um frühere Antworten zu erweitern, erfahren Sie hier, wie Sie aus der Ferne das Gleiche tun wie bei der akzeptierten Antwort. Verwenden Sie dazu ein passwortloses Upgrade über ssh, damit Ihre Box auf die neueste Version aktualisiert wird. Es wird aus meinem eigenen Blogeintrag kopiert .

Alle diese Schritte setzen voraus, dass Ihr Paket-Repository funktioniert. Das heißt, wenn Sie apt-get update ausführen, werden Ihnen aufgrund einer veralteten Version nicht viele 404-Dateien angezeigt. Sie müssen das zuerst beheben, sehen Sie sich also diese Antwort dafür an.

0. Aktualisieren Sie alle vorhandenen Pakete

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

1. Richten Sie die Ausführung ohne Passwort ein

Fügen Sie sich selbst zur Liste der Benutzer hinzu, die mit sudo ein Do-Release-Upgrade ausführen können, ohne ein Kennwort einzugeben

sudo visudo -f /etc/sudoers.d/do-release-upgrade.

und füge die folgende Zeile hinzu und ersetze meinen Benutzernamen natürlich durch deinen eigenen:

my-username ALL=NOPASSWD: /usr/bin/do-release-upgrade

2. Starten Sie inkrementelle Upgrades

Melden Sie sich ab und führen Sie den folgenden Befehl von Ihrem Computer aus. Es wird ein Upgrade durchgeführt, ohne dass Sie zur Eingabe aufgefordert werden (wobei alle Standardantworten akzeptiert werden). Warten Sie, bis der Computer neu gestartet wurde, und versuchen Sie dann erneut, ein Upgrade durchzuführen. Es wird ausgeführt, bis Sie auf die neueste Version aktualisiert haben.

while true; do 
    ssh my-user@my-server sudo do-release-upgrade -f DistUpgradeViewNonInteractive;
    sleep 120; 
done

3. Fixieren Sie die Konfigurationsdateien auf ihren vorherigen Status

Anschließend müssen Sie die gesicherten Konfigurationsdateien an ihren vorherigen Speicherort verschieben, da der Aktualisierungsprozess die Standardkonfigurationen an ihre Stelle gesetzt hat.

Nicht zufrieden mit den Standardantworten?

Dieser Typ hat eine Möglichkeit, Antworten für jede Eingabeaufforderung vorzubereiten , aber der Nachteil ist, dass Sie wissen müssen, wie viele Eingabeaufforderungen es gibt ...

Oligofren
quelle
5

Um zu bestätigen, was Thomas Ward in seiner Antwort sagt und der akzeptierten Antwort zu widersprechen, do-release-upgrade -d -f DistUpgradeViewNonInteractiveFUNKTIONIERT NICHT.

Tatsächlich hat es bei der allerersten Eingabeaufforderung meine Testpartition von 16.04 auf 18.04 beschädigt und ich musste sie erneut klonen. Hier friert das Skript ein:

Setting up mount (2.31.1-0.4ubuntu3) ...
Setting up systemd (237-3ubuntu10) ...
Installing new version of config file /etc/pam.d/systemd-user ...
Installing new version of config file /etc/systemd/journald.conf ...

Configuration file '/etc/systemd/logind.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** logind.conf (Y/I/N/O/D/Z) [default=N] ? y

Y
CRASHED... NOTHING HAPPENS NOW... WILL KILL AND RESTART WITHOUT -f OPTION...

Aufgrund von Eingabesperren funktioniert nach dem Beenden des Skripts weder ein Neustart noch ein Herunterfahren. Sie müssen eine Kaltabschaltung durchführen (Netzschalter ~ 10 Sekunden gedrückt halten).

Gott sei Dank war dies ein 16.04-Klon-Upgrade und nicht auf der echten 16.04-Partition.


Um das Leben noch interessanter zu gestalten, wurde meine NVMe-SSD um eine neue Partition mit 898 MB erweitert und meine regulären Partitionen verschoben:

$ lsdrv
NAME        FSTYPE  LABEL                  MOUNTPOINT          SIZE MODEL

nvme0n1                                                        477G Samsung SSD 960 PRO 512G
├─nvme0n1p5 ntfs                                               858M 
├─nvme0n1p3                                                     16M 
├─nvme0n1p1 ntfs                                               450M 
├─nvme0n1p8 ntfs    Shared_WSL+Linux       /mnt/e                9G 
├─nvme0n1p6 ext4    Ubuntu18.04                               23.7G 
├─nvme0n1p4 ntfs    NVMe_Win10             /mnt/c            390.4G 
├─nvme0n1p2 vfat                           /boot/efi            99M 
├─nvme0n1p9 swap    Linux Swap             [SWAP]              7.9G 
└─nvme0n1p7 ext4    NVMe_Ubuntu_16.0       /                  44.6G 
  • nvme0n1p5 Früher befand sich dort, wo sich meine Ubuntu 16.04-Partition befand, jetzt ist sie eingeschaltet nvme0n1p7
  • nvme0n1p8 Früher befand sich dort, wo sich meine 18.04-Testpartition befand, jetzt ist sie eingeschaltet nvme0n1p8

ANMERKUNG: Ich habe heute Nachmittag auch Windows 10 von Build 1709 auf Build 1803 aktualisiert, sodass die neue 898-MB- nvme0n1p5Partition möglicherweise im ntfsFormat erstellt wurde.

WinEunuuchs2Unix
quelle
Das ist allerdings ein großes Problem, daher sollten Sie es auf dem Launchpad melden. Benutzt den nicht interaktiven Weg durch mehrere Distributions-Upgrades früher
Oligofren
Ubuntu und Windows auf der gleichen Box am selben Tag aktualisiert? Sie müssen Schmerzen genießen
JDS
@ JDS Windows wurde gegabelt. 1700 Upgrades fehlen, alle Arten von gebrochenen Abhängigkeiten Python 2 vs Python 3. Ich habe Ubuntu 16.04 von Windows Store zu löschen und neu zu installieren seufzen .
WinEunuuchs2Unix
2

Dies können Sie über das Terminal mit sudo apt-get -y upgrade. Dadurch werden alle Eingabeaufforderungen mit "Ja" beantwortet. Es wird jedoch nicht automatisch ausgeführt, sodass Sie es ausführen müssen. Es sollte funktionieren. AFAIK: Es gibt keine Möglichkeit, den GUI-Update-Manager für unbeaufsichtigte Upgrades der Software zu verwenden ( dies ist NICHT dasselbe wie ein Release-Upgrade! ).

Wenn Sie versuchen, ein Upgrade auf eine andere Ubuntu-Version durchzuführen (auch als Release-Upgrade bekannt ), müssen Sie diese manuell aktivieren . sudo do-release-upgradekönnte funktionieren. Es gibt jedoch keine Möglichkeit, Eingabeaufforderungen zu überspringen. Aus diesem Grund initiieren Sie Upgrades, wenn Sie nach solchen Aufforderungen suchen - es werden Aufforderungen angezeigt.

Thomas Ward
quelle
1
Msgstr "Es gibt keine Möglichkeit, Eingabeaufforderungen zu überspringen". Was ist mit dem DistUpgradeViewNonInteractive-Flag? Das überspringt die Eingabeaufforderungen.
Oligofren
1
@oligofren Thomas hat recht, da -f DistUpgradeViewNonInteractiveFlag bewirkt, dass das Skript bei der ersten (Y/I/N/O/D/Z)Eingabeaufforderung abstürzt . Siehe meine Antwort, die ich gerade gepostet habe.
WinEunuuchs2Unix
-4

Versuchen Sie, die -yOption hinzuzufügen , apt-getaber Sie wissen, dass yalle Fragen beantwortet werden.

Blogger
quelle
1
Ich verwende den grafischen Update-Manager, nicht apt-get. Ich könnte das Update in der Konsole durchführen, aber ich habe gehört, dass 'apt-get dist-upgrade' seit Jahren nicht mehr funktioniert hat (um zwischen den Releases zu aktualisieren), daher wäre der Befehl nicht 'apt-get'.
JDM
@jdm apt-get dist-upgradesollte gut funktionieren. Wo hast du hier nicht mehr gearbeitet?
Seth
3
@Seth apt-get dist-upgradeführt jetzt und in keinem Betriebssystem ein eigenes Release-Upgrade durch. Sehen man apt-get. upgradeNur Upgrades von Paketen, die aktualisiert werden können, ohne dass Pakete neu installiert oder deinstalliert werden. dist-upgradeAktualisiert Pakete, auch wenn Pakete entfernt oder hinzugefügt werden. Dies ist hauptsächlich nützlich, um normale Updates durchzuführen - zum Beispiel upgradewerden Kernel nicht aktualisiert.
Eliah Kagan
2
Ändern sources.listPunkt zu den Archiven des nächsten Release und dann läuft apt-get dist-upgradeWillen, wenn es gelingt , führen Sie eine Release - Upgrade. Dies wird in Debian unterstützt, obwohl es empfohlen wird, es aptitude dist-upgradestattdessen zu verwenden, da es eine erweiterte Abhängigkeitsauflösung bietet. In Ubuntu wird so etwas überhaupt nicht unterstützt , obwohl es möglicherweise gelingt. Stattdessen wird zum Aktualisieren auf eine spätere Version in der Befehlszeile do-release-upgradeverwendet. Dieses Dienstprogramm nimmt kein -yFlag an, daher gilt diese Antwort nicht für die Situation, in der ein Upgrade auf ein neues Release durchgeführt wird .
Eliah Kagan
Interessant. Ich muss damals über Debian gelesen haben.
Seth