Est-il possible de répondre aux questions présentées sous forme de boîtes de dialogue lors de l'installation de paquets avec apt-get?
Par exemple, j'essaie de configurer un conteneur contenant le paquetage mail-stack-delivery
avec:
FROM ubuntu
RUN apt-get install -y mail-stack-delivery
Cependant, ce fichier de docker génère des dizaines d’erreurs lorsqu’il est construit, dans la lignée de:
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:
D'après ce que je comprends, je ne peux tout simplement pas répondre aux dialogues, mais existe-t-il un moyen de passer un paramètre pour répondre à chaque question à l'avance? Je sais qu'il ne s'agit que de modifier certaines configurations. Je peux donc le faire après coup, mais il est probablement préférable de laisser les scripts d'installation le faire pour que tout soit correctement configuré.
Voir la discussion ici: https://github.com/docker/docker/issues/4032 . En bref, il est déconseillé de définir ENV DEBIAN_FRONTEND noninteractive
car il persiste dans l'image finale, même lorsque vous exécutez une opération telle que docker run -i -t ... bash
. Par conséquent, il est recommandé d'omettre DEBIAN_FRONTEND
et de vivre avec l'avertissement, ou de le spécifier explicitement pour chaque commande, par exemple. RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package
.
Heureusement, la nouvelle directive ARG
définit des variables qui ne vivent que pendant la construction, de sorte qu'une solution plus élégante, spécifiée dans la variable DockerFile
, ne subsiste pas dans l'image finale: ARG DEBIAN_FRONTEND=noninteractive
.
Vous devez définir DEBIAN_FRONTEND = noninteractive en tant que variable d'env. Dans la plupart des cas, cela permettra au moins que l'installation ne soit pas erronée.
Comme mentionné également par @Azdle, l’utilisation de debconf-set-selections vous permettra de définir des éléments spécifiques.
Comme d'habitude, un peu plus de recherche a trouvé la réponse.
La réponse est debconf-set-selections
. Manpage: http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html
Pour rechercher les options pouvant être définies, utilisez debconf-get-selections
sur un système sur lequel le package est déjà installé. Vous devrez installer debconf-utils
pour la deuxième commande.
C'est la solution de travail:
ARG DEBIAN_FRONTEND = non interactif
ENV DEBIAN_FRONTEND noninteractive
n'a pas fonctionné pour moi
ARG DEBIAN_FRONTEND=noninteractive
non plus
mais RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
l'a fait
Exemple avec succès:
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
Sudo apt-get install -y -q <package name>