apt-get install tzdata noninteractive

109

Kiedy próbuję

apt-get install -y tzdata

pojawi się opcja wiersza poleceń do wybrania strefy czasowej. Próbuję użyć tego w skrypcie, aby przeprowadzić konfigurację, jak mogę uruchomić apt-get bez udziału użytkownika?

Wiem, aby zmienić konfigurację tzdata, którą mogę zrobić

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

Ale podczas instalacji potrzebuję, aby działał w pełni, nawet jeśli nie ustawia właściwej strefy czasowej, zawsze mogę to zmienić.

próbowałem

echo 5 | apt-get install -y tzdata

ale nie działa zgodnie z oczekiwaniami.

PYA
źródło

Odpowiedzi:

174

To jest skrypt, którego użyłem

(Zaktualizowana wersja z danymi wejściowymi od @elquimista z komentarzy)

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata

Wydaje się, że działa dobrze.

Jako jedna wkładka:

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata
PYA
źródło
45
Jeśli nie masz nic przeciwko UTC, oto jedna linijka:DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
elquimista
4
To taki ból. Nie mogę zainstalować tzdata bez monitowania mnie o ustawienie domyślnej strefy czasowej (monit o konfigurację podczas instalacji pakietu? Czyj to był pomysł?) I nie mogę ustawić domyślnej strefy czasowej bez uprzedniej instalacji tzdata. Jeśli przejdziesz w EOF, domyślnie jest ustawiony na UTC. Dlaczego po prostu tego nie zrobić i pozwolić użytkownikom na późniejszą aktualizację, jeśli chcą. Albo pozwól mi ustawić zmienną środowiskową TZ i poszukać tego dla tzdata.
theferrit32
3
Wykonanie ln -fs /usr/share/zoneinfo/America/New_York /etc/localtimewcześniejszego kroku DEBIAN_FRONTEND=noninteractive apt-get install -y tzdatabyło jedynym sposobem, w jaki mogłem zainstalować to bez monitu.
fncomp
To samo dotyczy mnie, jedynym sposobem, w jaki to zadziałało, było umieszczenie instrukcji ln jako pierwszej. @PYA.
jpruiz114
82

Jeśli ktoś chce to osiągnąć w Dockerfile, użyj jak poniżej.

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata
Youngjae
źródło
4
Można to zrobić w jednej linii: zmienna musi być ustawiona na części. Nie działa, jeśli jest ustawiony przed częścią dla części. RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ...DEBIAN_FRONTENDinstall&&update
Daniel Stevens
6

Wszystkie zasługi za to powinny trafić do @PYA, ale właściwa kolejność powinna być:

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
export DEBIAN_FRONTEND=noninteractive
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata
jpruiz114
źródło
Zredagowałem oryginalną odpowiedź, aby odzwierciedlić zmianę kolejności.
sebisnow
5

Niedawno znalazłem następujące rozwiązanie w pliku Dockerfile budującym bibliotekę Cingulata FHE:

ln -snf /usr/share/zoneinfo/$(curl https://ipapi.co/timezone) /etc/localtime

Zasadniczo używa interfejsu API dostarczonego przez ipapi.co do pobierania informacji o strefie czasowej. Spowoduje to automatyczne skonfigurowanie strefy czasowej w prawidłowy sposób zamiast pomijania okna dialogowego i używania domyślnej wartości (UTC).

Patrick
źródło
2

Oto jak to zrobiłem:

echo 1 > input.txt
echo 1 >> input.txt
apt-get install -y tzdata < input.txt
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
echo America/Los_Angeles > /etc/timezone

Pierwsze dwie instrukcje echo tworzą plik tekstowy, który zawiera numery wyboru dla menu obszaru geograficznego i menu miasta / regionu. Ten plik jest następnie używany do dostarczania danych wejściowych do polecenia apt-get install. Pakiet tzdata zostanie zainstalowany bez pytania użytkownika o wprowadzenie danych. Strefa czasowa zostanie ustawiona na Afryka / Abidżan, tak jakbyś wpisał 1 i 1 w odpowiedzi na komunikaty, które normalnie otrzymujesz. Następnie zmieniam strefę czasową na to, co chcę, za pomocą ostatnich dwóch poleceń.

Zamiast 1 i 1 możesz użyć rzeczywistych liczb dla wybranego obszaru geograficznego i miasta / regionu, ale wydaje mi się, że te liczby mogą się zmienić.

Mike Maready
źródło