Variável de ambiente DEBIAN_FRONTEND

22

Meu provedor de hospedagem em potencial sugere executar um comando no terminal para reduzir ao mínimo a imagem do sistema operacional do servidor baseado em KVM. Como seus modelos KVM vêm com pacotes dos quais não precisarei, pensei em usar o mesmo comando para remover pacotes indesejados.

Esse comando começa com DEBIAN_FRONTEND=noninteractive, e invoque da apt-get removeseguinte maneira:

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 

É a primeira vez que encontro a DEBIAN_FRONTENDvariável de ambiente e não consegui encontrar informações úteis até o momento. Então, eu me pergunto o que a configuração noninteractivefaz e se é aconselhável, porque suponho que esse valor ( noninteractive) persistiria.

Asarluhi
fonte
4
Sem saber o que faz, posso dizer que quando você define uma variável dessa maneira como parte de uma cadeia de comando mais longa, ela só é eficaz ao executar esse comando. Não persiste.
Gunnar Hjalmarsson

Respostas:

27

Simplesmente anexar um aptcomando com DEBIAN_FRONTEND=somethingnão persiste após o comando único ao qual é aplicado.

As DEBIAN_FRONTENDopções estão documentadas nas páginas de manual da Seção 7 de debconf(pode ser necessário instalar o debconf-docpacote para disponibilizá-lo no seu 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.

Também observa 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.
chave de aço
fonte
1
Vejo DEBIAN_FRONTEND=noninteractivecomumente usado em Dockerfiles. Essa resposta me faz pensar por que simplesmente não usamos a --yesflag com comandos apt, pois ela será mais explícita e, na maioria dos casos, atenderá às nossas necessidades.
Dennis
@ Dennis, acho que é porque o readline não está necessariamente instalado, e o apt pode emitir um aviso como tal.
hayd 6/01
4
Nota: se estiver usando DEBIAN_FRONTENDwith sudo, defina a variável no sudocomando, e não para ela. Ou seja: sudo DEBIAN_FRONTEND=noninteractive apt-get install slrn. Se você colocar a configuração da variável env antes sudo, ela será válida para o sudopróprio comando e sudonão a copiará para o apt-getcomando que está sendo executado. Usá-lo entre sudoe o comando real é uma sudosintaxe para configurar variáveis ​​env para o comando a ser executado (consulte a página de manual). Isso me deu um tempo difícil, então eu pensei em compartilhar.
caxcaxcoatl 17/06
1
Se você deseja alterar o comportamento padrão do frontend noninteractive, faça isso com o seguinte comando:dpkg-reconfigure debconf --frontend=noninteractive
Carter Pape