Evitare l'interazione dell'utente con tzdata durante l'installazione di certbot in un contenitore finestra mobile


108

Voglio installare certbot in un ambiente docker con un'immagine Ubuntu 16.04:

Per esempio:

docker run -it ubuntu:16.04 /bin/bash

Quando sono all'interno del contenitore, il modo più semplice per installare certbot non funziona in quanto richiede l'intervento dell'utente:

apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

Il problema è tzdatache si ferma con questa finestra di dialogo interattiva:

Extracting templates from packages: 100%
Preconfiguring packages ...
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

 1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
 2. America     5. Arctic     8. Europe    11. SystemV
 3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 

Stranamente, funziona quando installo tzdataprima di aggiungere il ppa:

apt-get update && \
apt-get install -y tzdata && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

Domande:

  • Perché fa la differenza se installo tzdataprima o dopo aver aggiunto il ppa?
  • Esiste un approccio migliore per evitare la finestra di dialogo interattiva durante l'installazione di certbot?

Purtroppo non funziona per me.
Nico Schlömer,

Risposte:


100

Per eseguire dpkg(dietro altri strumenti come Apt) senza dialoghi interattivi, è possibile impostare una variabile di ambiente come

DEBIAN_FRONTEND=noninteractive

Ad esempio, è possibile impostarlo in Dockerfile utilizzando ARG :

ARG DEBIAN_FRONTEND=noninteractive

4
Nota: sudonella maggior parte dei casi non passa attraverso le variabili di ambiente, quindi sudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdatafunziona ma DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdatanon lo fa.
Ripristina Monica il

30
Per i file docker, aggiungi questo: ENV DEBIAN_FRONTEND = non interattivo
jersey bean

1
Ho avuto un caso in cui questo non ha funzionato su Ubuntu 18.04. Ma sotto la risposta è stato risolto su Ubuntu 18.04.
tmanthey,

Controlla askubuntu.com/a/1098881/112499 poiché quella risposta risolve effettivamente il problema invece di nasconderlo come questo.
Ombra

29

Su Ubuntu 18.04 ho fatto Dockerfile:

ENV TZ=Europe/Minsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && apt instal....

Non ho fatto la differenza per me quando ho provato US / Denver. Forse ho tz informazioni sbagliate.
parole per


13

TL&DR: all'interno del DockerFile

ENV DEBIAN_FRONTEND=noninteractive 

Motivo:

Alcuni installatori semplificano le "installazioni" grazie a un bel front-end. Anche se questo è ottimo quando hai un'installazione manuale, questo diventa un problema durante le installazioni automatizzate.

È possibile superare l'installazione interattiva inserendo quanto segue nella stringa di ambiente.

Saluti



Concordato; Apportare modifiche. a Suggestiong
FlyingV

4

È possibile impostare DEBIAN_FRONTEND=noninteractiveprima del comando per evitare ENV DEBIAN_FRONTEND=noninteractiveeffetti dopo i comandi o l'immagine figlio:

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.