dpkg-reconfigure tzdataを自動化する


60

私はpuppetを使用して、debianサーバーのクラスターを管理しています。クラスター上の各マシンのタイムゾーンを変更する必要があります。これを行う適切なdebianの方法はを使用することdpkg-reconfigure tzdataです。しかし、ダイアログを使用する場合にのみ変更できるように見えます。これをシェルから自動化する方法はありますか?Execを書くだけで簡単にできますか?

そうでない場合、私は次の最善の方法は、おそらく人形を配布持っているだろうと思う/etc/timezone/etc/localtime、クラスタ全体で正しいデータで。

どんな入力でも歓迎します!


現在受け入れられている答えは2017年以降間違っていることに注意してください。正解はこれです。
ダンダスカレスク

回答:


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 bash -c 'echo "Europe/Dublin" > /etc/timezone'
期す

6
注意喚起!新しいUbuntu / Debianバージョンは、この方法では動作しません。動作が変更されました。bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
gertvdijk

21

以来受け入れられた答えは、もはや(Debianのジェシー、2017年4月)、@ gertvdijkのから修正アプローチ作品コメントリンクを今すぐ仕事をするために表示されません。

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

1
これは最近受け入れられた答えであるはずです。
ダンダスカレスク

すばらしい、これはおやつです
infomaniac

5

debconf-set-selectionsを使用して構成を事前設定できる必要があります。debconf-utilsをインストールdebconf-get-selections | grep tzdataし、適切に構成されたシステムで実行して、何を設定するかを決定します。


1
debconfベースの場合、これは機能するはずです。ただし、tzdataは/ etc / timezoneの構成を優先します。そのため、これは既にインストールされている(wheezy)システムでは機能しません。
エルロンド14

3

また、(現在廃止されている)Puppet wikiアーカイブ)のレシピを使用することもできます。このレシピは/etc/localtime、次の適切なzoneinfoファイルに置き換えられます/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 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.