apt-get install tzdata 비대화 형


109

내가하려고 할 때

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

하지만 예상대로 작동하지 않습니다.

답변:


174

이것은 내가 사용한 스크립트입니다.

(댓글에서 @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

45
UTC에 문제가 없다면 여기에 한 DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
줄짜리 글이 있습니다

4
이것은 정말 고통 스럽습니다. 기본 시간대를 설정하라는 메시지가 표시되지 않으면 tzdata를 설치할 수 없으며 (패키지 설치 중 구성 프롬프트? 누구의 생각 이었습니까?) tzdata를 먼저 설치하지 않고는 기본 시간대를 설정할 수 없습니다. EOF를 전달하면 이미 기본값이 UTC입니다. 그냥 그렇게하고 원하는 경우 나중에 사용자가 업데이트하도록하는 것이 어떻습니까? 또는 TZ 환경 변수를 설정하고 tzdata에서 찾아 보도록하겠습니다.
theferrit32

3
ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime이전 단계를 수행하는 DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata것이 프롬프트없이 설치할 수있는 유일한 방법이었습니다.
fncomp 19

저도 마찬가지입니다. 이것이 작동하는 유일한 방법은 ln 문을 먼저 배치하는 것입니다. @PYA.
jpruiz114

82

누군가에서 달성하고 싶다면 Dockerfile아래와 같이 사용하십시오.

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

4
이는 한 줄로 수행 할 수 있습니다 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends .... DEBIAN_FRONTEND변수는 install부품에 대해 설정되어야합니다 . 부품에 &&대해 이전에 설정하면 작동하지 않습니다 update.
Daniel Stevens

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

최근 Cingulata FHE 라이브러리를 구축하는 Dockerfile에서 다음 솔루션을 찾았습니다 .

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

기본적으로 ipapi.co에서 제공하는 API를 사용하여 시간대 정보를 검색합니다. 이렇게하면 대화 상자를 건너 뛰고 기본값 (UTC)을 사용하는 대신 시간대가 자동으로 올바르게 구성됩니다.


2

내가 한 방법은 다음과 같습니다.

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 대신 원하는 지리적 영역과 도시 / 지역에 대한 실제 숫자를 사용할 수 있지만 그 숫자가 변경 될 수있는 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.