So automatisieren Sie geänderte Konfigurationsdateien während des apt-get-Upgrades in Ubuntu 12

13

Ich verwende gerne "Messer Cloudstack Server erstellen ...", um eine neue VM zu erstellen. Meine Bootstrap-Vorlage beginnt mit einem "apt-get update" und einem "apt-get -y upgrade".

Das Upgrade wird dann angehalten mit:

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

Es gibt also wirklich zwei Probleme:

Erstens, kann ich apt-get dazu bringen, standardmäßig etwas zu tun? Offensichtlich gibt es keine Möglichkeit, eine Antwort zu geben.

Zweitens weiß ich nicht einmal, wie die richtige Antwort auf die Frage lauten sollte. Die Konfigurationsdatei, die ersetzt wird, stammt aus einer Vorlage. Ich habe noch nicht nachgeschlagen, was "nscd" überhaupt macht. (Vermutlich ist "Y" die richtige Antwort, aber die Forschung zum Zeitpunkt der Frage ist entmutigend.)

Mojo
quelle

Antworten:

15

Sie können Argumente übergeben, um Eingabeaufforderungen zu vermeiden. Das funktioniert bei mir;

apt-get update
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

--force-confold(meine Wahl) macht diese Fragen "Was möchten Sie mit geänderten Konfigurationsdateien tun?" standardmäßig auf N(behalten Sie Ihre aktuell installierte Version bei).

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.
--force-confnew: always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.
--force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.
--force-confmiss: ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

Warnung - Einige geänderte Konfigurationsdateien können Ihr System beschädigen, wenn sie zurückgehalten werden und nicht mit der aktualisierten Paketversion kompatibel sind. Bitte testen Sie es, bevor Sie es in Automatisierungslösungen bereitstellen.

Jossef Harush
quelle
5

Wenn Sie keine interaktiven Fragen beantworten möchten, setzen Sie die DEBIAN_FRONTENDFront-End-Variable auf noninteractive.

Dies kann so einfach sein wie DEBIAN_FRONTEND=noninteractive apt-get upgrade.

Sie erhalten keine Nachrichten und die Standardeinstellungen werden ausgewählt. In den meisten Fällen bedeutet dies, dass Ihre Konfigurationsdateien nicht geändert werden und Sie Dateien erhalten, die wie *.dpkg-newan allen Stellen benannt sind, an denen eine Konfigurationsdatei unberührt blieb. Sie können die Änderungen dann manuell auflösen oder Ihre lokale Konfiguration mithilfe eines Konfigurationsverwaltungssystems oder ähnlichem auf das System übertragen.

Zweitens weiß ich nicht einmal, wie die richtige Antwort auf die Frage lauten sollte

Wenn Sie die Taste D drücken, wird der Unterschied angezeigt, den Sie dann überprüfen können. Wenn Sie sicher sind, dass Sie diese Datei nie manuell geändert haben, ist die Auswahl von Y als Ersatz wahrscheinlich sicher (Sie haben überprüft, ob Ihre Backups RICHTIG aktualisiert wurden !! ). Wenn Sie N auswählen, bleibt nur die alte Datei erhalten, die in 95% der Fälle ebenfalls sicher ist, es sei denn, das Paket hatte wesentliche Änderungen, die normalerweise in den Änderungsprotokollen / Versionshinweisen behandelt werden, die Sie auch gelesen haben, bevor Sie den Befehl upgrade / dist-upgrade ausgeführt haben.

Versuchen Sie danach einfach zuerst den Befehl in Ihrer Testumgebung. Sehen Sie, ob die Dinge nicht funktionieren. Wenn Sie sich nicht sicher sind, holen Sie sich das Diff und lesen Sie die Dokumentation für das Paket und die Recherche.

Zoredache
quelle
Sie raten DEBIAN_FRONTEND = nicht interaktiv über --force-yes? Es hört sich so an, als wäre der Standardwert NEIN, und "Ja" ist in diesem Fall eher richtig. (Ich kann keine Tasten drücken, da es keinen Standard gibt.)
Mojo