Frage 100% nicht-interaktives Debian-dist-upgrade


Gibt es einen Weg, ein zu tun? apt-get dist-upgrade in Debian, das nicht nur automatisch alle Fragen mit "Ja" beantwortet, sondern auch angemessene Standardwerte als Antworten auf Fragen verwendet, die so ausgefeilt sind, dass verschiedene interaktive Dialogfelder angezeigt werden müssen? Ich denke hier an die Tastaturbelegung, die beim Upgrade angezeigt wird libc6und Kernel-Bildauswahlmöglichkeiten.

Ziel ist es, aus der Ferne eine ziemlich große initiieren zu können dist-upgrade - selbst für eine Maschine, die stark hinter der Zeit zurückliegt - und sie nicht babysitten muss, es sei denn, etwas ist einfach nur schrecklich, katastrophal falsch.

Sicherlich ist das möglich?

Danke im Voraus!


30
2017-07-31 23:43


Ursprung


Für diejenigen, die nur auf Ubuntu upgraden möchten (anstatt dist-upgrade), versuchen Sie die unbeaufsichtigtes Upgrade Paket. - Jo Liss


Antworten:


Wenn Sie einstellen DEBIAN_FRONTEND=noninteractive (um Debconf-Eingabeaufforderungen zu stoppen) und hinzufügen force-confold und force-confdef zu deinem /etc/dpkg/dpkg.cfg Datei, sollten Sie eine völlig nicht interaktive Paketinstallationserfahrung haben. Jedes Paket, das Sie immer noch zur Eingabe von Informationen auffordert, hat einen veröffentlichungskritischen Fehler (und ich sage das als ein Automationsjunkie und als Debian-Entwickler).


36
2017-08-01 02:51



das hat bei mir nicht funktioniert. apt-listchanges wurde eröffnet von less. - magnetar
@mognetar: Das ist ein Problem mit apt-listchanges, nicht apt. Deinstallieren Sie apt-listchanges oder konfigurieren Sie es entsprechend. - womble♦
Versuchen Sie: env APT_LISTCHANGES_FRONTEND = keine apt-get dist-upgrade -u -y - H.-Dirk Schmitt


Florian Lohoff Gesendet Ein Weg, um das zu bekommen, was Womble in einem einzigen Befehl vorgeschlagen hat:

DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade

Natürlich könntest du auch verwenden -o Dpkg::Options::="--force-confnew --force-confdef" (Suche das dpkg man-Seite für confnew). Ich bin nicht sicher, in welchen Fällen dies jedoch einen Unterschied machen würde. Ich persönlich brauche das nicht-interaktive Upgrade, um Vanilla Images auf den neuesten Stand zu bringen. In diesem Fall nehme ich immer die neue Konfigurationsdatei (ohne --force-confdef) ist eine vernünftige Sache.


16
2018-06-11 13:58



W: --force-yes is deprecated, use one of the options starting with --allow instead. - Alex


Obwohl die obige Antwort von Womble im Allgemeinen gut ist, hat es bei mir nicht funktioniert, und ich musste zusätzliche Nachforschungen anstellen, um 100% unbeaufsichtigt zu bleiben. Ich dachte, ich werde das Ergebnis in einer prägnanten Weise teilen, um die Dinge für künftige Besucher einfacher zu machen.

Das Folgende ist ein Skript, das gemäß den Upgrade-Empfehlungen von debian 8 release notes (meistens) zusammen mit Flags und Umgebungsvariablen ausgeführt wird, die es unbeaufsichtigt machen. (das echos sind nur zum Debuggen und könnten entfernt werden - obwohl ich empfehle, sie so zu behalten, wenn das Skript hängenbleibt, wirst du wissen, wo)

#!/bin/bash

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" &&
apt-get -fuy --force-yes autoremove &&

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

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

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

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

2
2018-06-28 14:40





Von dem apt-get(8) man seite:

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

Als Referenz, die -y Option arbeitet an yum(8) auch.


-3
2017-08-01 01:52



Ich kenne das. Ich benutze dieses Flag und es antwortet erfolgreich mit "Ja" zu Standard APT Y / N Fragen über das Überschreiben von bestehenden Konfigurationen, usw., usw. Das sind nicht die Fragen, auf die ich mich beziehe. Wenn ich ein apt-get -y dist-upgrade ausführte, gab es mir noch einige "Dialog" -Prompts für das, was es als Big-Ticket-Zeug ansieht, dh Änderungen der Tastenbelegung, Neustart des libc6-Dienstes usw. Ich suchte nach einem zusätzlichen Flag für schalte das auch aus. - Alex Balashov