Come automatizzare i file di configurazione modificati durante apt-get upgrade in Ubuntu 12


13

Mi piace usare "coltello cloudstack server create ..." per costruire una nuova VM. Il mio modello bootstrap inizia con un "apt-get update" e "apt-get -y upgrade".

L'aggiornamento si interrompe quindi con:

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] ?

Quindi ci sono davvero due problemi:

In primo luogo, posso ottenere apt-get per fare qualcosa di default? Ovviamente non c'è modo di fornire una risposta.

In secondo luogo, non so nemmeno quale dovrebbe essere la risposta giusta alla domanda. Il file di configurazione che sta sostituendo proviene da un modello. Non ho ancora cercato cosa fa "nscd". (Presumibilmente "Y" è la risposta corretta, ma la ricerca coinvolta al momento della domanda è scoraggiante.)

Risposte:


15

È possibile passare argomenti per evitare di ricevere prompt. Questo funziona per me;

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(la mia scelta) renderà queste domande predefinite su "Cosa vuoi fare per il file di configurazione modificato"N (mantieni la versione attualmente installata)

--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).

Avviso : alcuni file di configurazione modificati possono danneggiare il sistema se conservati e non compatibili con la versione del pacchetto aggiornata. Provalo prima di implementarlo in soluzioni di automazione.


5

Se non vuoi assolutamente rispondere a nessuna domanda interattiva, imposta la DEBIAN_FRONTENDvariabile front-end su noninteractive.

Questo può essere facile come DEBIAN_FRONTEND=noninteractive apt-get upgrade.

Non riceverai messaggi e verranno scelti i valori predefiniti. Nella maggior parte dei casi, ciò significa che i file di configurazione non verranno modificati e verranno lasciati file con nome simile *.dpkg-newper tutti i luoghi in cui un file di configurazione non è stato toccato. È quindi possibile risolvere manualmente le modifiche o inviare la configurazione locale al sistema utilizzando un sistema di gestione della configurazione o altro.

In secondo luogo, non so nemmeno quale dovrebbe essere la risposta giusta alla domanda

Premendo il tasto D verrà visualizzata la differenza, che sarà quindi possibile ispezionare. Se sei sicuro di non aver mai modificato manualmente quel file, scegliere Y per sostituirlo è probabilmente sicuro (hai verificato i tuoi backup aggiornando DESTRA !! ). La scelta di N mantiene solo il vecchio file, che è anche sicuro il 95% delle volte, a meno che il pacchetto non abbia subito importanti modifiche, che di solito sono coperte nelle note di log / di rilascio che hai letto anche prima di eseguire il comando upgrade / dist-upgrade.

Passato quello, prova semplicemente il comando prima nel tuo ambiente di test. Vedi se le cose non funzionano. Se non sei davvero sicuro, ottieni il diff e leggi la documentazione per il pacchetto e la ricerca.


Consiglia DEBIAN_FRONTEND = non interattivo su --force-yes? Sembra che il valore predefinito sia NO, e "sì" è probabilmente più corretto in questo caso. (Non riesco a premere alcun tasto poiché non c'è stdin.)
Mojo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.