apt-get install tzdata noninteractive

Когда я пытаюсь

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

но он работает не так, как ожидалось.


person PYA    schedule 02.06.2017    source источник


Ответы (7)


Это сценарий, который я использовал

(Обновленная версия с учетом комментариев @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
person PYA    schedule 02.06.2017
comment
Если вас устраивает UTC, вот однострочник: DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata - person elquimista; 19.09.2018
comment
Это такая боль. Я не могу установить tzdata, пока мне не будет предложено установить часовой пояс по умолчанию (запрос конфигурации во время установки пакета? Чья это была идея?), И я не могу установить часовой пояс по умолчанию без предварительной установки tzdata. Если вы передаете EOF, по умолчанию уже используется UTC. Почему бы просто не сделать это и позволить пользователям обновиться позже, если они захотят. Или позвольте мне установить переменную среды TZ и попросить tzdata ее найти. - person theferrit32; 17.04.2019
comment
Выполнение ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime шага до DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata было единственным способом установить это без приглашения. - person fncomp; 15.06.2019
comment
То же самое и со мной, единственный способ, которым это сработало, - это сначала поместить оператор ln. @PYA. - person jpruiz114; 17.06.2019

Если кто-то хочет добиться этого за Dockerfile, используйте, как показано ниже.

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata
person Youngjae    schedule 07.10.2019
comment
Это можно сделать одной строкой: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ... Переменная DEBIAN_FRONTEND должна быть установлена ​​для части install. Он не работает, если установлен перед && для части update. - person Daniel Stevens; 24.08.2020
comment
Выдача ARG DEBIAN_FRONTEND=noninteractive в отдельной строке срабатывала для меня иногда, в то время как в одной строке, как рекомендовано @DanielStevens, срабатывала для меня всегда. - person Stephan Samuel; 19.02.2021


Вся заслуга в этом должна принадлежать @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
person jpruiz114    schedule 16.06.2019
comment
Я отредактировал исходный ответ, чтобы отразить изменение порядка. - person sebisnow; 02.07.2019

вот что сработало для меня:

from ubuntu:bionic
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y tzdata

RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
person grantr    schedule 23.02.2021

Чтобы не играть напрямую с символическими ссылками и запускать конфигурацию только один раз, я предлагаю использовать _ 1_ команда:

echo 'tzdata tzdata/Areas select Europe' | debconf-set-selections
echo 'tzdata tzdata/Zones/Europe select Paris' | debconf-set-selections
DEBIAN_FRONTEND="noninteractive" apt install -y tzdata
person Pascal H.    schedule 28.05.2021

Вот как я это сделал:

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

Первые два оператора echo создают текстовый файл, содержащий номера выбора для меню географической области и меню города / региона. Затем этот файл используется для ввода команды установки apt-get. Пакет tzdata будет установлен без запроса пользователя. Часовой пояс будет установлен на Африка / Абиджан, как если бы вы ввели 1 и 1 в ответ на обычные запросы. Затем я изменяю часовой пояс на то, что хочу, с помощью последних двух команд.

Вместо 1 и 1 вы можете использовать фактические числа для географической области и города / региона, которые вам нужны, но мне кажется, что эти числа могут измениться.

person Mike Maready    schedule 04.06.2020