DEBIAN_FRONTEND variabile di ambiente


22

Il mio potenziale fornitore di hosting suggerisce di eseguire un comando nel terminale per ridurre al minimo l'immagine del sistema operativo del server basato su KVM. Dato che i loro modelli KVM vengono forniti con pacchetti che non mi serviranno, ho pensato che avrei potuto usare lo stesso comando per rimuovere i pacchetti indesiderati.

Tale comando inizia con DEBIAN_FRONTEND=noninteractive, quindi invoca apt-get removecome segue:

DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" package-1 package-2 ... package-n; apt-get -y autoremove; apt-get clean all 

È la prima volta che incontro la DEBIAN_FRONTENDvariabile d'ambiente e finora non ho trovato informazioni utili. Quindi mi chiedo che impostazione noninteractivefaccia, e se è consigliabile, perché suppongo che value ( noninteractive) potrebbe persistere.


4
Senza sapere cosa fa, posso dire che quando si imposta una variabile in quel modo come parte di una stringa di comando più lunga, è efficace solo quando si esegue quel comando. Non persiste.
Gunnar Hjalmarsson,

Risposte:


27

La semplice aggiunta di un aptcomando con DEBIAN_FRONTEND=somethingnon persiste dopo il singolo comando a cui viene applicato.

Le DEBIAN_FRONTENDopzioni sono documentate nelle pagine del manuale della Sezione 7 di debconf(potrebbe essere necessario installare il debconf-docpacchetto per renderle disponibili sul proprio sistema). Da man 7 debconf:

Frontends
   One of debconf's unique features is that the interface it  presents  to
   you is only one of many, that can be swapped in at will. There are many
   debconf frontends available:

   dialog The default frontend, this uses  the  whiptail(1)  or  dialog(1)
          programs to display questions to you. It works in text mode.

   readline
          The  most  traditional frontend, this looks quite similar to how
          Debian configuration always has been:  a  series  of  questions,
          printed  out  at  the console using plain text, and prompts done
          using the readline library. It even supports tab completion. The
          libterm-readline-gnu-perl package is strongly recommended if you
          chose to use this frontend; the default readline module does not
          support  prompting  with default values.  At the minimum, you'll
          need the perl-modules package installed to use this frontend.

          This frontend has some special hotkeys. Pageup (or ctrl-u)  will
          go  back  to  the previous question (if that is supported by the
          package that is using debconf), and pagedown  (or  ctrl-v)  will
          skip forward to the next question.

          This is the best frontend for remote admin work over a slow con‐
          nection, or for those who are comfortable with unix.

   noninteractive
          This is the anti-frontend. It never interacts with you  at  all,
          and  makes  the  default  answers  be used for all questions. It
          might mail error messages to root, but that's it;  otherwise  it
          is  completely  silent  and  unobtrusive, a perfect frontend for
          automatic installs. If you are using this front-end, and require
          non-default  answers  to questions, you will need to preseed the
          debconf database; see the section below  on  Unattended  Package
          Installation for more details.

Nota inoltre che:

   You can change the default frontend debconf uses by reconfiguring  deb‐
   conf.  On the other hand, if you just want to change the frontend for a
   minute, you can set the DEBIAN_FRONTEND  environment  variable  to  the
   name of the frontend to use. For example:

     DEBIAN_FRONTEND=readline apt-get install slrn

   The  dpkg-reconfigure(8) and dpkg-preconfigure(8) commands also let you
   pass --frontend= to them, followed by the frontend  you  want  them  to
   use.

   Note  that not all frontends will work in all circumstances. If a fron‐
   tend fails to start up for some reason, debconf will print out  a  mes‐
   sage explaining why, and fall back to the next-most similar frontend.

1
Vedo DEBIAN_FRONTEND=noninteractivecomunemente usato in Dockerfiles. Questa risposta mi fa chiedere perché semplicemente non usiamo la --yesbandiera con i comandi apt poiché sarà più esplicita e nella maggior parte dei casi soddisferà le nostre esigenze.
Dennis

@Dennis Penso che sia perché readline non è necessariamente installato e apt può emettere un avviso in quanto tale.
hayd

4
Nota: se si utilizza DEBIAN_FRONTENDcon sudo, impostare la variabile all'interno del sudocomando e non per essa. Cioè: sudo DEBIAN_FRONTEND=noninteractive apt-get install slrn. Se si imposta prima l'impostazione della variabile env sudo, sarà valida per il sudocomando stesso e sudonon verrà copiata nel apt-getcomando in esecuzione. Usarlo tra sudoe il comando effettivo è una sudosintassi per impostare le variabili env per il comando da eseguire (vedere la pagina man). Questo mi ha dato un momento difficile, quindi ho pensato di condividere.
caxcaxcoatl,

1
Se vuoi cambiare il comportamento predefinito del frontend in noninteractive, puoi farlo con il seguente comando:dpkg-reconfigure debconf --frontend=noninteractive
Carter Pape
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.