Variable d'environnement DEBIAN_FRONTEND

22

Mon hébergeur potentiel suggère d'exécuter une commande dans le terminal afin de minimiser l'image du système d'exploitation du serveur basé sur KVM. Étant donné que leurs modèles KVM sont livrés avec des packages dont je n'aurai pas besoin, j'ai pensé utiliser la même commande pour supprimer les packages indésirables.

Cette commande commence par DEBIAN_FRONTEND=noninteractive, puis appelez apt-get removecomme suit:

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 

C'est la première fois que je rencontre la DEBIAN_FRONTENDvariable d'environnement, et je n'ai pas pu trouver d'informations utiles jusqu'à présent. Je me demande donc à quoi cela noninteractivesert, et si c'est conseillé, car je suppose que value ( noninteractive) persisterait.

Asarluhi
la source
4
Sans savoir ce qu'il fait, je peux dire que lorsque vous définissez une variable de cette façon dans le cadre d'une chaîne de commande plus longue, elle n'est efficace que lors de l'exécution de cette commande. Elle ne persiste pas.
Gunnar Hjalmarsson

Réponses:

27

Le simple fait d'ajouter une aptcommande avec DEBIAN_FRONTEND=somethingne persiste pas après la seule commande à laquelle elle est appliquée.

Les DEBIAN_FRONTENDoptions sont documentées dans les pages de manuel de la section 7 de debconf(vous devrez peut-être installer le debconf-docpackage pour les rendre disponibles sur votre système). 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.

Il note également 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.
tournevis
la source
1
Je vois DEBIAN_FRONTEND=noninteractivecouramment utilisé dans Dockerfiles. Cette réponse me fait me demander pourquoi nous n'utilisons tout simplement pas l' --yesindicateur avec les commandes apt car il sera plus explicite et dans la plupart des cas, il répondra à nos besoins.
Dennis
@Dennis Je pense que c'est parce que readline n'est pas nécessairement installé, et apt peut afficher un avertissement en tant que tel.
hayd
4
Remarque: si vous utilisez DEBIAN_FRONTENDavec sudo, définissez la variable dans la sudocommande, et non pour elle. C'est: sudo DEBIAN_FRONTEND=noninteractive apt-get install slrn. Si vous placez le paramètre de variable env avant sudo, il sera valide pour la sudocommande elle-même et sudone le copiera pas dans la apt-getcommande en cours d'exécution. L'utiliser entre sudoet la commande réelle est une sudosyntaxe pour configurer les variables env pour la commande à exécuter (voir la page de manuel). Cela m'a donné du fil à retordre, j'ai donc pensé partager.
caxcaxcoatl
1
Si vous souhaitez changer le comportement par défaut du frontend en noninteractive, vous pouvez le faire avec la commande suivante:dpkg-reconfigure debconf --frontend=noninteractive
Carter Pape