Czy podczas instalacji pod Dockerem można odpowiadać na pytania w oknie dialogowym?
Czy można w jakiś sposób odpowiedzieć na pytania, które są wyświetlane jako okna dialogowe podczas instalacji niektórych pakietów przy użyciu apt-get?
Na przykład próbuję skonfigurować kontener zawierający mail-stack-delivery
pakiet z:
FROM ubuntu
RUN apt-get install -y mail-stack-delivery
Jednak ten plik dockerfile generuje dziesiątki błędów po zbudowaniu, które są następujące:
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:
Z tego, co rozumiem, po prostu nie mogę odpowiedzieć na okna dialogowe, ale czy jest jakiś sposób, aby przekazać parametr, aby odpowiedzieć na każde pytanie w Zaliczka? Wiem, że to tylko zmiana niektórych konfiguracji, więc mogę to zrobić po fakcie, ale prawdopodobnie lepiej niech skrypty instalacyjne to zrobić, aby wszystko zostało ustawione poprawnie.
5 answers
Zobacz dyskusję tutaj: https://github.com/docker/docker/issues/4032 . krótko mówiąc, ustawienie ENV DEBIAN_FRONTEND noninteractive
nie jest zalecane, ponieważ utrzymuje się na ostatecznym obrazie, nawet podczas uruchamiania czegoś takiego jak docker run -i -t ... bash
. Dlatego zaleca się albo pominięcie DEBIAN_FRONTEND
i życie z ostrzeżeniem, albo podanie go jawnie dla każdego polecenia, np. RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package
.
Na szczęście, nowa dyrektywa ARG
ustawia zmienne, które żyją tylko podczas budowania, więc możliwe jest teraz bardziej eleganckie rozwiązanie, które jest określone w DockerFile
jeszcze nie utrzymuje się na ostatecznym obrazie: ARG DEBIAN_FRONTEND=noninteractive
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-15 10:40:36
Powinieneś ustawić DEBIAN_FRONTEND = noniteractive jako envvar. W większości przypadków to przynajmniej sprawi, że instalacja nie będzie błąd.
Również, jak wspomniał @Azdle, użycie debconf-set-selections pozwoli Ci ustawić określone elementy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-09 16:57:38
Jak zwykle, trochę więcej poszukiwań znalazło odpowiedź.
Odpowiedź brzmi debconf-set-selections
. Manpage: http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html
Aby znaleźć opcje, które można ustawić, użyj debconf-get-selections
w systemie, który ma już zainstalowany pakiet. Musisz zainstalować debconf-utils
dla drugiego polecenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-17 22:25:44
Jest To rozwiązanie robocze:
ARG DEBIAN_FRONTEND=nieinteractive
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-18 19:30:51
ENV DEBIAN_FRONTEND noninteractive
nie działa dla mnie
ARG DEBIAN_FRONTEND=noninteractive
Ale
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
did
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 20:57:47