[bash] apt-get install tzdata 비대화 형

내가하려고 할 때

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

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



답변

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

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


답변

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

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


답변

이에 대한 모든 크레딧은 @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


답변

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

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

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


답변

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

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


답변