DEBIAN_FRONTEND variable de entorno

22

Mi proveedor potencial de alojamiento sugiere ejecutar un comando en la terminal para que la imagen del sistema operativo del servidor basado en KVM sea mínima. Como sus plantillas KVM vienen con paquetes que no necesitaré, pensé que podría usar ese mismo comando para eliminar paquetes no deseados.

Ese comando comienza con DEBIAN_FRONTEND=noninteractive, luego invoque de la apt-get removesiguiente manera:

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 

Es la primera vez que encuentro la DEBIAN_FRONTENDvariable de entorno, y hasta ahora no pude encontrar información útil. Entonces, me pregunto qué configuración noninteractivetiene, y si es aconsejable, porque supongo que el valor ( noninteractive) persistiría.

Asarluhi
fuente
44
Sin saber lo que hace, puedo decir que cuando configura una variable de esa manera como parte de una cadena de comando más larga, solo es efectiva cuando se ejecuta ese comando. No persiste
Gunnar Hjalmarsson el

Respuestas:

27

Simplemente anteponer un aptcomando con DEBIAN_FRONTEND=somethingno persiste después del comando único al que se aplica.

Las DEBIAN_FRONTENDopciones están documentadas en las páginas del manual de la Sección 7 de debconf(es posible que deba instalar el debconf-docpaquete para que estén disponibles en su sistema). De 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.

También señala que:

   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.
conductor de acero
fuente
1
Veo DEBIAN_FRONTEND=noninteractivecomúnmente utilizado en Dockerfiles. Esta respuesta me hace preguntarme por qué simplemente no usamos el --yesindicador con comandos apt, ya que será más explícito y, en la mayoría de los casos, satisfará nuestras necesidades.
Dennis
@ Dennis Creo que es porque readline no está necesariamente instalado, y apt puede generar una advertencia como tal.
Hayd
44
Nota: si usa DEBIAN_FRONTENDwith sudo, configure la variable dentro del sudocomando, y no para ella. Es decir: sudo DEBIAN_FRONTEND=noninteractive apt-get install slrn. Si coloca la configuración de la variable env antes sudo, será válida para el sudocomando en sí y sudono la copiará al apt-getcomando que se está ejecutando. Usarlo entre sudoy el comando real es la sudosintaxis para configurar las variables env para que el comando se ejecute (consulte la página de manual). Esto me hizo pasar un mal rato, así que pensé en compartir.
caxcaxcoatl
1
Si desea cambiar el comportamiento predeterminado de la interfaz a noninteractive, puede hacerlo con el siguiente comando:dpkg-reconfigure debconf --frontend=noninteractive
Carter Pape