DEBIAN_FRONTEND 환경 변수


22

잠재적 인 호스팅 제공 업체 KVM 기반 서버의 OS 이미지를 최소화하기 위해 터미널에서 명령을 실행할 것을 제안 합니다. 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가치가 있다면 그 가치 ( noninteractive)가 지속될 것이라고 가정하기 때문에 바람직하다면 .


4
그것이 무엇인지 알지 못하면 더 긴 명령 문자열의 일부로 변수를 설정하면 해당 명령을 실행할 때만 효과적이라는 것을 알 수 있습니다. 지속되지 않습니다.
Gunnar Hjalmarsson '11

답변:


27

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.

1
DEBIAN_FRONTEND=noninteractiveDockerfiles에서 일반적으로 사용되는 것을 볼 수 있습니다. 이 대답은 왜 우리 --yes가 apt 명령과 함께 플래그를 사용하지 않는지 더 궁금해 합니다.
Dennis

@Dennis readline이 반드시 설치되어 있지는 않으므로 apt가 경고를 출력 할 수 있다고 생각합니다.
hayd

4
참고 : DEBIAN_FRONTENDwith를 사용 하는 경우 명령 sudo내에서 변수를 설정하십시오 sudo. 즉 : sudo DEBIAN_FRONTEND=noninteractive apt-get install slrn. env 변수 설정을 앞에두면 명령 자체에 sudo유효 하며 실행중인 명령에 복사되지 않습니다 . 실제 명령과 실제 명령 사이에이를 사용 하면 명령을 실행할 env 변수를 설정하는 구문이 있습니다 (설명서 페이지 참조). 이것은 나에게 힘든 시간을 주었다. 그래서 나는 공유하는 것을 생각했다. sudosudoapt-getsudosudo
caxcaxcoatl

1
프론트 엔드 기본 동작을로 변경하려면 noninteractive다음 명령을 사용하여이를 수행 할 수 있습니다.dpkg-reconfigure debconf --frontend=noninteractive
Carter Pape
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.