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:
私が理解したことから、私は単にダイアログに応答することはできませんが、各質問に事前に答えるためにパラメータを渡すことができる方法はありますか?いくつかの構成を変更しているだけなので、事後にそれを行うことができますが、おそらくすべてが正しく設定されるようにインストールスクリプトを実行する方が良いでしょう。
こちらの説明をご覧ください: 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
。
EnvvarとしてDEBIAN_FRONTEND = noninteractiveを設定する必要があります。ほとんどの場合、これにより少なくともインストールがエラーになることはありません。
また、@ Azdleが述べたように、debconf-set-selectionsを使用すると、特定の項目を設定できます。
いつものように、もう少し検索すると答えが見つかりました。
答えはdebconf-set-selections
です。マンページ: http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html
設定可能なオプションを見つけるには、既にパッケージがインストールされているシステムでdebconf-get-selections
を使用します。 2番目のコマンドにはdebconf-utils
をインストールする必要があります。
これは実用的なソリューションです:
ARG DEBIAN_FRONTEND =非インタラクティブ
ENV DEBIAN_FRONTEND noninteractive
私にとってはうまくいかなかった
どちらもARG DEBIAN_FRONTEND=noninteractive
しかし、RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
した
成功した例:
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
Sudo apt-get install -y -q <package name>