DEBIAN_FRONTEND variabel lingkungan

22

Penyedia hosting potensial saya menyarankan untuk menjalankan perintah di terminal untuk membuat image OS server berbasis KVM menjadi minimal. Karena template KVM mereka datang dengan paket yang tidak saya perlukan, saya pikir saya mungkin menggunakan perintah yang sama untuk menghapus paket yang tidak diinginkan.

Perintah itu dimulai dengan DEBIAN_FRONTEND=noninteractive, lalu panggil apt-get removesebagai berikut:

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 

Ini adalah pertama kalinya saya menemukan DEBIAN_FRONTENDvariabel lingkungan, dan sejauh ini saya tidak dapat menemukan informasi yang berguna. Jadi saya bertanya-tanya pengaturan apa yang harus noninteractivedilakukan, dan jika disarankan, karena saya kira nilai ( noninteractive) akan bertahan.

Asarluhi
sumber
4
Tanpa mengetahui apa yang dilakukannya, saya dapat mengatakan bahwa ketika Anda menetapkan variabel seperti itu sebagai bagian dari string perintah yang lebih lama, itu hanya efektif ketika menjalankan perintah itu. Itu tidak bertahan.
Gunnar Hjalmarsson

Jawaban:

27

Cukup dengan mendahulukan aptperintah dengan DEBIAN_FRONTEND=somethingtidak bertahan setelah satu perintah yang diterapkan.

The DEBIAN_FRONTENDpilihan didokumentasikan dalam Bagian 7 halaman manual debconf(Anda mungkin perlu menginstal debconf-docpaket untuk membuat ini tersedia pada sistem Anda). Dari 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.

Ini juga mencatat bahwa:

   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.
Steeldriver
sumber
1
Saya melihat DEBIAN_FRONTEND=noninteractiveumum digunakan di Dockerfiles. Jawaban ini membuat saya bertanya-tanya mengapa kita tidak menggunakan --yesflag dengan perintah apt karena ini akan lebih eksplisit dan dalam banyak kasus akan memenuhi kebutuhan kita.
Dennis
@ Dennis Saya pikir itu karena readline belum tentu diinstal, dan apt dapat menampilkan peringatan seperti itu.
hayd
4
Catatan: jika menggunakan DEBIAN_FRONTENDdengan sudo, setel variabel di dalam sudoperintah, dan bukan untuknya. Yaitu: sudo DEBIAN_FRONTEND=noninteractive apt-get install slrn. Jika Anda meletakkan pengaturan variabel env sebelumnya sudo, itu akan valid untuk sudoperintah itu sendiri, dan sudotidak akan menyalinnya ke apt-getperintah yang sedang dijalankan. Menggunakannya di antara sudodan perintah aktual adalah sudosintaks untuk mengatur variabel env agar perintah dapat dijalankan (lihat halaman manual). Ini memberi saya waktu yang sulit, jadi saya berpikir untuk berbagi.
caxcaxcoatl
1
Jika Anda ingin mengubah perilaku default frontend noninteractive, Anda dapat melakukannya dengan perintah berikut:dpkg-reconfigure debconf --frontend=noninteractive
Carter Pape