apt-get встановити tzdata неінтерактивним


100

Коли я намагаюся

apt-get install -y tzdata

з'являється параметр командного рядка для вибору часового поясу. Я намагаюся використовувати це у сценарії, щоб виконати деяку настройку, як я можу зробити запуск apt-get без введення користувачем?

Я знаю, як змінити конфігурацію tzdata, яку я можу зробити

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

Але при встановленні мені потрібно, щоб він працював повністю, навіть якщо він не встановив правильний часовий пояс, я завжди можу його налаштувати.

я намагався

echo 5 | apt-get install -y tzdata

але це працює не так, як очікувалося.

Відповіді:


170

Це сценарій, яким я користувався

(Оновлена ​​версія із введенням @elquimista з коментарів)

#!/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

Здається, працює нормально.

Як один лайнер:

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata

44
Якщо у вас все добре з UTC, ось один лайнер:DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
elquimista

4
Це така біль. Я не можу встановити tzdata без того, щоб це запропонувало мені встановити мій часовий пояс за замовчуванням (підказка про конфігурацію під час встановлення пакета? Чия це була ідея?), І я не можу встановити часовий пояс за замовчуванням без попередньої установки tzdata. Якщо ви переходите в EOF, він за замовчуванням має значення UTC. Чому б просто не зробити це і дозволити користувачеві оновлюватись пізніше, якщо вони цього хочуть. Або дозвольте мені встановити змінну середовища TZ і попросити tzdata шукати це.
theferrit32

2
Виконання попереднього ln -fs /usr/share/zoneinfo/America/New_York /etc/localtimeкроку DEBIAN_FRONTEND=noninteractive apt-get install -y tzdataбуло єдиним способом отримати це, щоб встановити без підказки.
fncomp

Те саме стосується мене, єдиний спосіб, який це спрацював, - це розміщення оператора ln першим. @PYA.
jpruiz114

75

Якщо хтось хоче цього досягти Dockerfile, використовуйте, як показано нижче.

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata

2
Це може бути зроблено в одному рядку: змінна повинна бути встановлена на частини. Це не працює, якщо встановлено перед для частини. RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ...DEBIAN_FRONTENDinstall&&update
Деніел Стівенс,

6

Вся заслуга за це повинна надходити @PYA, але правильний порядок повинен бути:

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

Я відредагував оригінальну відповідь, щоб відображати зміну порядку.
sebisnow

5

Нещодавно я знайшов таке рішення у Dockerfile, що створює бібліотеку Cingulata FHE:

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

В основному він використовує API, наданий ipapi.co, для отримання інформації про часовий пояс. Це автоматично налаштовує часовий пояс належним чином, замість того, щоб пропускати діалогове вікно та використовувати за замовчуванням (UTC).


1

Ось як я це зробив:

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

Перші два ехо-оператори створюють текстовий файл, що містить номери вибору для меню географічної області та меню міста / регіону. Потім цей файл використовується для введення команди apt-get install. Пакет tzdata буде встановлений без запиту будь-якого введення користувачем. Часовий пояс буде встановлений для Африки / Абіджану, як якщо б ви ввели 1 і 1 у відповідь на підказки, які ви зазвичай отримуєте. Потім я змінюю часовий пояс на бажаний за допомогою двох останніх команд.

Замість 1 і 1 ви можете використовувати фактичні цифри для географічного району та міста / регіону, які хочете, але мені здається, що ці цифри можуть змінитися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.