DEBIAN_FRONTEND 環境變數

DEBIAN_FRONTEND 環境變數

我潛在的託管提供者建議在終端機中執行命令,以使基於 KVM 的伺服器的作業系統映像最小化。由於他們的 KVM 模板附帶了我不需要的包,我想我可以使用相同的命令來刪除不需要的包。

該命令以 開頭DEBIAN_FRONTEND=noninteractive,然後apt-get remove按如下方式調用:

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 

這是我第一次遇到DEBIAN_FRONTEND環境變量,到目前為止我找不到有用的信息。所以我想知道它的設定有何作用noninteractive,以及是否可取,因為我認為 value ( noninteractive) 會持續存在。

答案1

簡單地在apt命令前面加上DEBIAN_FRONTEND=something不會在應用它的單一命令之後持續存在。

這些DEBIAN_FRONTEND選項記錄在第 7 節手冊頁中debconf(您可能需要安裝debconf-doc軟體包才能使這些選項在您的系統上可用)。從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.

它也指出:

   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.

答案2

在編寫無人值守腳本(包括Dockerfiles)時,使用apt install -ybut時沒有 DEBIAN_FRONTEND=noninteractive,有時安裝會卡在互動式提示符號處。

在此輸入影像描述

透過執行安裝命令並DEBIAN_FRONTEND=noninteractive停用這些互動式 xprompts。

相關內容