web-dev-qa-db-ja.com

dockerでインストールするときにダイアログの質問に答えることはできますか?

Apt-getを使用して一部のパッケージをインストールするときにダイアログとして表示される質問に何らかの方法で答えることは可能ですか?

例えば、私はmail-stack-deliveryパッケージを含むコンテナをセットアップしようとしています:

FROM ubuntu

RUN apt-get install -y mail-stack-delivery

ただし、そのdockerfileは、ビルド時に次の行に沿って多数のエラーを生成します。

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/Perl /usr/local/lib/Perl/5.14.2 /usr/local/share/Perl/5.14.2 /usr/lib/Perl5 /usr/share/Perl5 /usr/lib/Perl/5.14 /usr/share/Perl/5.14 /usr/local/lib/site_Perl .) at /usr/share/Perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 11.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin: 

私が理解したことから、私は単にダイアログに応答することはできませんが、各質問に事前に答えるためにパラメータを渡すことができる方法はありますか?いくつかの構成を変更しているだけなので、事後にそれを行うことができますが、おそらくすべてが正しく設定されるようにインストールスクリプトを実行する方が良いでしょう。

69
Azdle

こちらの説明をご覧ください: https://github.com/docker/docker/issues/4032 。要するに、ENV DEBIAN_FRONTEND noninteractiveのようなものを実行している場合でも、docker run -i -t ... bashを設定することは最終イメージに保持されるため推奨されません。そのため、DEBIAN_FRONTENDを省略して警告を表示するか、コマンドごとに明示的に指定することをお勧めします。 RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package

幸いなことに、新しいARGディレクティブは、ビルド中にのみ有効な変数を設定するため、DockerFileで指定されているが、最終的なイメージには保持されない、より洗練されたソリューションが可能になりました:ARG DEBIAN_FRONTEND=noninteractive

65
Ohad Schneider

EnvvarとしてDEBIAN_FRONTEND = noninteractiveを設定する必要があります。ほとんどの場合、これにより少なくともインストールがエラーになることはありません。

また、@ Azdleが述べたように、debconf-set-selectionsを使用すると、特定の項目を設定できます。

25
cpuguy83

いつものように、もう少し検索すると答えが見つかりました。

答えはdebconf-set-selectionsです。マンページ: http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html

設定可能なオプションを見つけるには、既にパッケージがインストールされているシステムでdebconf-get-selectionsを使用します。 2番目のコマンドにはdebconf-utilsをインストールする必要があります。

14
Azdle

これは実用的なソリューションです:

ARG DEBIAN_FRONTEND =非インタラクティブ

6
vovandos

ENV DEBIAN_FRONTEND noninteractive私にとってはうまくいかなかった

どちらもARG DEBIAN_FRONTEND=noninteractive

しかし、RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections した

2
ishandutta2007

成功した例:

echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
Sudo apt-get install -y -q <package name>
1
DINESH RATHEE