Come fare in modo che apt-get accetti nuovi file di configurazione in un'installazione automatica di debian da Repo


21

Sto scrivendo uno script per un'installazione automatica di un pacchetto che si trova nel nostro repository, è un pacchetto software con uno dei file di configurazione contrassegnati di Debian. C'è qualche opzione a cui posso passare apt-get/ in aptitudemodo che accetti i nuovi file di configurazione?

Fondamentalmente ho bisogno di un apt/ aptitudeequivalente di dpkg --force-confnew

Devo rispondere alla seguente domanda posta durante l' apt-getinstallazione con una Y


File di configurazione `` / opt / application / conf / XXX.conf``

==> File on system created by you or by a script.
==> File also in package provided by package maintainer.

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     : background this process to examine the 

The default action is to keep your current version.

Informazioni addizionali:

Inoltre, sto passando la sudopassword in una pipe per eseguire il comando

echo "mysudopass"|sudo -S apt-get mypackage

Questo sta segnalando un errore nell'installazione quando l'installazione è nella fase interattiva di configurazione.

Sono su Ubuntu 10.04
versione apt: apt 0.7.25.3

Perché non posso utilizzarlo dpkg: questi Debian devono essere installati da Repo e non ho Debian locali sul mio computer


Risposte:


22

È possibile passare dpkgparametri apt-getcome questo

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

Con --force-confdefse esistono ancora i vecchi file di configurazione, non otterranno sovrascritto. Quindi probabilmente non lo userai, lo sto solo documentando per gli altri.

sudonon verrà richiesta una password se si annulla l'opzione di autenticazione per l'utente o si aggiunge il NOPASSWDtag nella voce specifica. per esempio

someuser ALL = NOPASSWD: /usr/bin/apt-get

7

Puoi provare quanto segue:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

Ma nota che ciò ha implicazioni, come password predefinite vuote (forse ti piacerebbe qualche strumento di distribuzione / configurazione come burattino, cuoco, tessuto ...?).

Vedi sudoers (5) su come consentire sudoinvocazioni senza password .


3

In alternativa a ciò che Forcefsck ha suggerito, ti suggerisco di aggiungere questo nelle impostazioni APT in modo che non ti venga richiesto di aggiungere queste opzioni difficili da scrivere in ogni momento. Inoltre, ciò sarebbe utile per gli aggiornamenti automatici se si dispone di queste impostazioni.

Creare un /etc/apt/apt.conf.d/71debconffile per avere il seguente contenuto:

Dpkg::Options {
  "--force-confnew";
};

Nota (da Geoff): questo cambiamento sarebbe un cambiamento globale. Se nel sistema sono presenti altri pacchetti che si desidera ottenere aggiornamenti automatici ma sono stati configurati anche manualmente, questa non sarebbe la soluzione appropriata.


Questa potrebbe essere una buona opzione, tuttavia è importante notare che questo sarebbe un cambiamento GLOBALE. Se sul sistema sono presenti altri pacchetti che si desidera ottenere aggiornamenti automatici ma che sono stati configurati, questa non sarebbe la soluzione appropriata.
Geoff,

2

Oltre alle altre risposte, potrebbe essere necessario impostare l'ambiente UCF_FORCE_CONFFNEW = 1 .

Ad esempio openssh in debian stretch usa ucf (non debconf) openssh-server/openssh-7.4p1/debian/openssh-server.postinstper chiedere informazioni sul file di configurazione. (Potete vedere il openssh-server.postinstutilizzando dgetcontro http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )

Abbiamo dovuto usare tutti i trucchi in questa pagina oltre ad essere utenti liberali della preconfigurazione di debconf .

Tuttavia, ci siamo fermati poco meno export DEBIAN_FRONTEND=noninteractiveperché vogliamo sapere se ci siamo persi qualcosa (che potrebbe essere importante). Il nostro caso d'uso è un operatore che avvia l'operazione. Si prevede che l'aggiornamento non sia interattivo, ma l'operatore è presente se qualcosa va storto e si presenta una finestra di dialogo. La tua situazione potrebbe essere diversa.

Ma export DEBIAN_FRONTEND=noninteractiveè il tuo proverbiale mazza.

Attenzione: l'impostazione -o Dpkg::Options::=--force-confnewe / o UCF_FORCE_CONFFNEW=1indica che tutti i file di configurazione dai pacchetti installati tornano a quelli a monte. Ad esempio, nel caso di openssh-server, il tuo /etc/ssh/sshd_configverrà ripristinato alle impostazioni di fabbrica. E ad esempio PermitRootLogin=yesverrà rimosso. Ma ovviamente non lo usi, quindi starai bene! ;-)

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.