dpkg 자동화-tzdata 재구성


60

꼭두각시를 사용하여 데비안 서버 클러스터를 관리하고 있습니다. 클러스터에서 각 컴퓨터의 시간대를 변경해야합니다. 이를위한 데비안의 올바른 방법은를 사용하는 것 dpkg-reconfigure tzdata입니다. 그러나 대화 상자를 사용하는 경우에만 변경하는 것처럼 보일 수 있습니다. 쉘에서 이것을 자동화 할 수있는 방법이 있습니까? 그래서 이것을 쉽게하기 위해 Exec을 작성할 수 있습니까?

그렇지 않다면 다음으로 가장 좋은 방법은 꼭두각시 가 클러스터 전체에 올바른 데이터를 배포 /etc/timezone하고 배포하는 것입니다 /etc/localtime.

모든 의견을 부탁드립니다!


현재 승인 된 답변은 2017 년 이후 로 잘못되었습니다 . 정답은 이것 입니다.
Dan Dascalescu

답변:


92

프론트 엔드를 '비 대화식'으로 지정해야하며 현재 설정이 저장됩니다.

dpkg-reconfigure는 현재 시스템 설정을 복음으로 받아들이므로 표준 시간대를 정상적으로 변경하고 비 대화식 플래그로 실행하십시오.

예를 들어 "유럽 / 더블린"으로 변경하려면 :

# echo "Europe/Dublin" > /etc/timezone    
# dpkg-reconfigure -f noninteractive tzdata

분명히 이것은 / etc / timezone도 배포하고 puppet / cfengine을 사용할 수있게합니다.


5
권한 변경에 대한 대안으로 이와 같은 작업을 수행 할 수 있습니다. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null
gorelative

3
완전성을 위해 sudo를 통해 에코하는 다른 방법은 다음과 같습니다.sudo bash -c 'echo "Europe/Dublin" > /etc/timezone'
MartyMacGyver

6
헤즈 업! 최신 Ubuntu / Debian 버전은 더 이상이 방식으로 작동하지 않습니다. 동작이 변경되었습니다. bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
gertvdijk

21

허용 된 답변이 더 이상 작동하지 않기 때문에 (Debian Jessie, 2017 년 4 월) @gertvdijk의 댓글 링크 에서 수정 된 접근 방식 이 현재 작업을 수행하는 것으로 보입니다.

sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata

1
이것은 오늘날 받아 들여질만한 대답이어야합니다.
Dan Dascalescu

위대한, 이것은 치료를 작동
infomaniac

5

debconf-set-selections 를 사용하여 구성을 사전 설정할 수 있어야 합니다. debconf-utils를 설치 debconf-get-selections | grep tzdata하고 올바르게 구성된 시스템에서 실행 하여 설정 내용을 파악하십시오.


1
debconf를 기반으로하는 것이라면 이것이 효과가 있습니다. 그러나 tzdata는 / etc / timezone의 구성을 선호합니다. 따라서 이미 설치된 (지저분한) 시스템에서는 작동하지 않습니다.
Elrond

3

다음 의 적절한 zoneinfo 파일로 대체되는 (현재 기능이없는) Puppet wiki ( archive ) 의 레시피를 사용할 수도 있습니다 ./etc/localtime/usr/share/zoneinfo

class timezone {
    package { "tzdata":
        ensure => installed
    }
}

class timezone::central inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Central",
    }
}

class timezone::eastern inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Eastern"
    }
}

class timezone::pacific inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Pacific"
    }
}

class timezone::mountain inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source =>
             "file:///usr/share/zoneinfo/US/Mountain"
    }
}

dpkg-reconfigure가 추가 작업을 수행하는지 확실하지 않지만 위의 레시피를 사용했으며 완벽하게 작동합니다.


-3

매우 간단하며 명령을 입력하고 간단한 질문에 대답하면됩니다.
그런 다음 다음을 실행하십시오.

/usr/bin/tzselect

1
man tzselect : "tzselect는 실제로 시간대를 변경하지 않습니다. 'dpkg-reconfigure tzdata'를 사용하여이를 수행하십시오."
spinkus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.