2009年4月 9日

[gentoojp-users:02132] Re: うるう秒

黒田です。度々失礼します。

とりあえず解決しました。
このページを参考に、
http://www.nabble.com/sntpclock-%3D-ntpdate-%2B-22s-td10996515.html

# cp /usr/share/zoneinfo/Japan /etc/localtime
# mv /var/lib/clockspeed/leapsecs.dat /var/lib/clockspeed/leapsecs.dat.xxx

としたところ、clockspeed でも問題なく使えそうです。

ちなみに
$ TZ=/usr/share/zoneinfo/right/Japan ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'; TZ=/usr/share/zoneinfo/Japan ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'
Thu Apr 09 20:10:38 +0900 2009
Thu Apr 09 11:10:14 UTC 2009
1239275438
Thu Apr 09 20:10:38 +0900 2009
Thu Apr 09 11:10:14 UTC 2009
1239275438
結果が変わりましたが、何を意味しているのかは???です。

$ perl -e 'use POSIX; printf("%d\n", mktime(0, 0, 9, 1, 0, 109));'
1230768000
で、相変わらず閏秒には対応できていないようですが、結果オーライとします。
お騒がせしました。
ありがとうございました。


On Thu, 09 Apr 2009 17:51:18 +0900
kuroda <kuroda@xxxxx> wrote:

> 黒田です。
> アドバイスありがとうございます。
>
> 問題を整理するため、もう一度インストールからやり直しました。
> gentoo handbook にしたがってインストールします。
> install-x86-minimal-2008.0.iso を使って、
> ほぼ書いてあるとおりに進めました。
> 途中、ゾーンファイルは(リンクでなく)コピーした後、
> date コマンドで手元の時計(今回はこれが基準)に合わせました。
> # cp /usr/share/zoneinfo/right/Japan /etc/localtime
> # ls -l /usr/share/zoneinfo/right/Japan /etc/localtime
> -rw-r--r-- 1 root root 791 Apr 10 2009 /etc/localtime
> -rw-r--r-- 2 root root 791 Feb 14 2008 /usr/share/zoneinfo/right/Japan
> # date MMDDhhmmYYYY
> # cat /etc/conf.d/clock | grep TIMEZONE
> TIMEZONE="right/Japan"
>
> その後、rubyをインストールし教えてもらったコマンドを試しました。
> $ TZ=/usr/share/zoneinfo/right/Japan ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'
> Thu Apr 09 13:43:02 +0900 2009 →手元の時計と一致
> Thu Apr 09 04:43:02 UTC 2009 →手元の時計 -9h =OK
> 1239252205
>
> $ TZ=/usr/share/zoneinfo/Japan ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'
> Thu Apr 09 13:43:35 +0900 2009 →手元の時計 +23s
> Thu Apr 09 04:43:35 UTC 2009 →手元の時計 -9h +23s =OK
> 1239252215
>
> 教えてもらったリンク先に書かれているように
> 1行目と2行目では、ちょうど 9 時間の差があり、
> Japan では、手元の時計に対して 23 秒差あるのが正解だと思うので、
> いずれも問題なく期待したとおりの結果でした。
>
> また他のサイトから得た情報で、
> 「2009年1月1日9時0秒 の UNIX time を得る」を試したところ
> $ perl -e 'use POSIX; printf("%d\n", mktime(0, 0, 9, 1, 0, 109));'
> 1230768023
> これもOKです。
>
> この時点では、
> sys-libs/glibc-2.6.1
> sys-libs/timezone-data-2007k
> ↑↑ ここまではOKです。↑↑
>
> ↓↓ ここからが問題です。↓↓
> ここで、更新をかけ(*1)、再度確認します。
> # emerge -au world
> 更新後は、
> sys-libs/glibc-2.8_p20080602-r1
> sys-libs/timezone-data-2009b
>
> ゾーンファイル確認
> $ ls -l /usr/share/zoneinfo/right/Japan /etc/localtime
> -rw-r--r-- 1 root root 811 Apr 9 16:16 /etc/localtime
> -rw-r--r-- 2 root root 811 Apr 9 13:54 /usr/share/zoneinfo/right/Japan
> TIMEZONE="right/Japan" としてあるので、自動的にコピーされたようです。
>
> $ TZ=/usr/share/zoneinfo/right/Japan ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'
> Thu Apr 09 16:23:30 +0900 2009 →手元の時計と一致
> Thu Apr 09 07:23:06 UTC 2009 →手元の時計 -9h -24s =NG
> 1239261810
>
> $ TZ=/usr/share/zoneinfo/Japan ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'
> Thu Apr 09 16:25:00 +0900 2009 →手元の時計と一致
> Thu Apr 09 07:25:00 UTC 2009 →手元の時計 -9h =NG
> 1239261899
>
> 2009年1月1日9時0秒 の UNIX time を得る
> $ perl -e 'use POSIX; printf("%d\n", mktime(0, 0, 9, 1, 0, 109));'
> 1230768000
> やはり、うるう秒を考慮していないようです。
>
> また教えてもらったリンク先では、ゾーンファイルに問題があったようなので、
> $ wget ftp://elsie.nci.nih.gov/pub/tzdata2009d.tar.gz
> ダウンロードして手動で作成してみましたが、状況は変わりませんでした。
>
> ということで行き詰ってしまいました。
> また時間があるときに色々やってみたいと思います。
> ちなみに、上記で「right/Japan」としているところを「Japan」として設定して
> いれば(普通はそうすると思いますが)、今回の問題は表面には出てこないかも
> しれません。しかしこれだと clockspeed が使えない・・・。
> おとなしく ntp にしようと思いますが、やはり気持ち悪いです・・・。
>
> *1: 以下は、emerge -au world で更新されたパッケージです
> [ebuild N ] app-arch/lzma-utils-4.32.7 USE="-nocxx"
> [ebuild U ] sys-devel/gnuconfig-20080928 [20070724]
> [ebuild U ] dev-libs/gmp-4.2.4 [4.2.2]
> [ebuild U ] sys-devel/autoconf-wrapper-6 [4-r3]
> [ebuild U ] sys-libs/timezone-data-2009b [2007k]
> [ebuild U ] app-arch/bzip2-1.0.5-r1 [1.0.5]
> [ebuild U ] app-arch/cpio-2.9-r2 [2.9-r1]
> [ebuild U ] sys-kernel/linux-headers-2.6.27-r2 [2.6.23-r3]
> [ebuild U ] sys-devel/m4-1.4.12 [1.4.11]
> [ebuild U ] dev-libs/mpfr-2.4.1_p1 [2.3.0_p4]
> [ebuild U ] net-misc/iputils-20071127 [20070202] USE="-ipv6*"
> [ebuild U ] app-shells/bash-3.2_p39 [3.2_p17-r1] USE="-examples%"
> [ebuild U ] sys-apps/less-418 [416]
> [ebuild U ] sys-libs/readline-5.2_p13 [5.2_p7]
> [ebuild N ] virtual/pager-0
> [ebuild U ] dev-libs/openssl-0.9.8k [0.9.8g-r2]
> [ebuild U ] sys-apps/texinfo-4.13 [4.8-r5]
> [ebuild U ] sys-apps/sed-4.1.5-r1 [4.1.5]
> [ebuild U ] sys-devel/flex-2.5.35 [2.5.33-r3]
> [ebuild U ] sys-apps/findutils-4.4.0 [4.3.11]
> [ebuild N ] dev-perl/Locale-gettext-1.05
> [ebuild U ] app-arch/gzip-1.3.12-r1 [1.3.12]
> [ebuild U ] sys-apps/gawk-3.1.6 [3.1.5-r5]
> [ebuild U ] app-arch/tar-1.20 [1.19-r1]
> [ebuild U ] net-misc/wget-1.11.3 [1.10.2] USE="-ipv6*"
> [ebuild U ] sys-apps/net-tools-1.60_p20071202044231-r1 [1.60-r13]
> [ebuild U ] sys-devel/autoconf-2.63 [2.61-r1]
> [ebuild N ] sys-apps/help2man-1.36.4 USE="nls"
> [ebuild N ] sys-devel/bc-1.06.95 USE="readline -libedit -static"
> [ebuild U ] sys-apps/which-2.19 [2.16]
> [ebuild U ] sys-devel/automake-1.10.2 [1.10.1]
> [ebuild U ] sys-devel/libtool-1.5.26 [1.5.24]
> [ebuild U ] sys-apps/acl-2.2.47 [2.2.45]
> [ebuild U ] sys-apps/groff-1.20.1-r1 [1.19.2-r1] LINGUAS="-ja%"
> [ebuild U ] sys-process/psmisc-22.6 [22.5-r2] USE="-ipv6*"
> [ebuild U ] sys-apps/coreutils-6.10-r2 [6.10-r1]
> [ebuild U ] sys-apps/man-1.6f-r3 [1.6e-r3] USE="-lzma%"
> [ebuild U ] net-misc/rsync-3.0.5 [2.6.9-r6] USE="iconv%* -ipv6* -xattr%"
> [ebuild U ] sys-devel/binutils-2.18-r3 [2.18-r1]
> [ebuild NS ] dev-lang/python-2.5.2-r7 [2.4.4-r13] USE="berkdb gdbm ncurses readline ssl threads xml -build -doc -examples -ipv6 -sqlite -tk -ucs2 -wininst"
> [ebuild U ] sys-libs/cracklib-2.8.13 [2.8.10]
> [ebuild U ] sys-apps/file-4.23 [4.21-r1]
> [ebuild U ] sys-apps/module-init-tools-3.5 [3.4]
> [ebuild U ] sys-fs/udev-124-r1 [115-r1]
> [ebuild NS ] sys-devel/gcc-4.3.2-r3 [4.1.2] USE="fortran mudflap nls openmp (-altivec) -bootstrap -build -doc (-fixed-point) -gcj -gtk (-hardened) -ip28 -ip32r10k -libffi (-multilib) -multislot (-n32) (-n64) -nocxx -nopie -objc -objc++ -objc-gc -test -vanilla"
> [ebuild U ] sys-libs/glibc-2.8_p20080602-r1 [2.6.1]
> [ebuild U ] sys-libs/pam-1.0.4 [0.99.9.0]
> [ebuild N ] sys-auth/pambase-20081028 USE="cracklib sha512 -consolekit -debug -gnome-keyring -mktemp -passwdqc (-selinux) -ssh"
> [ebuild U ] sys-apps/shadow-4.1.2.2 [4.0.18.1-r1] USE="-audit%"
> [ebuild U ] sys-apps/busybox-1.13.2 [1.8.2]
> [ebuild U ] net-misc/openssh-5.2_p1-r1 [4.7_p1-r6] USE="-pkcs11%"
> [ebuild U ] sys-apps/man-pages-3.19 [2.76] LINGUAS="-cs% -da% -de% -es% -fr% -it% -ja% -nl% -pl% -ro% -ru% -zh_CN%"
> [ebuild N ] sys-apps/man-pages-posix-2003a
> [ebuild N ] sys-libs/e2fsprogs-libs-1.41.3-r1 USE="nls"
> [ebuild U ] sys-apps/util-linux-2.14.1 [2.13.1.1] USE="(-uclibc)"
> [ebuild U ] sys-fs/e2fsprogs-1.41.3-r1 [1.40.8]
> [blocks b ] <sys-fs/e2fsprogs-1.41 ("<sys-fs/e2fsprogs-1.41" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
> [uninstall ] sys-libs/com_err-1.40.8
> [blocks b ] sys-libs/com_err ("sys-libs/com_err" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
> [uninstall ] sys-libs/ss-1.40.8
> [blocks b ] sys-libs/ss ("sys-libs/ss" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
>
>
>
> On Thu, 9 Apr 2009 08:34:43 +0900
> MATSUU Takuto <matsuu@xxxxx> wrote:
>
> > 松鵜です。
> >
> > 手元の環境はsys-libs/glibc-2.8_p20080602-r1なのですが、
> > 以下で表示される日時が異なるのを確認しました。
> >
> > $ TZ=/usr/share/zoneinfo/right/Japan ruby -e 't = Time.now; p
> > t,t.getutc,t.tv_sec'
> > $ TZ=/usr/share/zoneinfo/Japan ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'
> >
> > clockspeedでは未確認です。このあたりはどうでしょう?
> >
> > 参考: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/22849
> >
> > ちなみに、今回の問題とはおそらく無関係ですが、
> > gentoo handbookには昔は、
> > # ln -sf /usr/share/zoneinfo/Japan /etc/localtime
> > と書かれていましたが、今は
> > # cp /usr/share/zoneinfo/Japan /etc/localtime
> > になっているはずです。参考まで。
> >
> > 2009/4/9 kuroda <kuroda@xxxxx>:
> > > 1点間違いがありました。
> > > 一番下の方の
> > > # ln -sf /usr/share/zoneinfo/GMT /etc/localtime
> > > の場合は変化があり、
> > > # date(05:35:00に打ち込み)
> > > Wed Apr 8 20:34:36 GMT 2009
> > > でした。
> > >
> > > 黒田
> > >
> > >
> > > On Thu, 09 Apr 2009 05:29:11 +0900
> > > kuroda <kuroda@xxxxx> wrote:
> > >
> > >> 初めまして、黒田と申します。
> > >>
> > >> 時刻調整に、clockspeed を使っています。
> > >> http://www.gentei.org/~yuuji/support/uu/200207/part5.html
> > >> この場合、うるう秒に対応させる必要があるようで、
> > >> # ln -sf /usr/share/zoneinfo/right/Japan /etc/localtime
> > >> としています。
> > >> ちなみに、
> > >> # ln -sf /usr/share/zoneinfo/Japan /etc/localtime
> > >> に切り替えると、(うるう秒を考慮しない)24秒進んだ時刻になります。
> > >> ゾーンファイルの中身を見ても、「right」の方にはうるう秒らしきものが挿入
> > >> されており、合点して使っていました。少なくとも数年はこれで問題ありません
> > >> でした。
> > >>
> > >> ところが、先日
> > >> # emerge -u world
> > >> してから、うるう秒に対応しなくなってしまいました。
> > >> # date
> > >> と打つと、24秒進んだ時刻を表示し、ゾーンファイルを切り替えても、
> > >> # ln -sf /usr/share/zoneinfo/right/Japan /etc/localtime
> > >> # ln -sf /usr/share/zoneinfo/Japan /etc/localtime
> > >> どちらも同じ結果(24秒進んだ時刻)を返すようになってしまいました。
> > >>
> > >> 色々試したところ、glibcをマスクすれば、
> > >> # cat /etc/portage/package.mask
> > >> >sys-libs/glibc-2.6.1
> > >> OKということを確認しましたが、あまりよい解決策とは思えません。
> > >> そこで、今回初めて ntp を試してみたところ、影響なく正常でした。
> > >> もう clockspeed はやめて、ntp にしようかと思い始めているところですが、何
> > >> か釈然としません。
> > >>
> > >> 今までの「/etc/localtime の指すゾーンファイルを切り替えることによって、
> > >> 時刻が変化する」というメカニズムは、今後は機能しないと考えたほうがよいの
> > >> でしょうか?
> > >> ちなみに、現在の ntp 環境では、
> > >> # ln -sf /usr/share/zoneinfo/right/Japan /etc/localtime
> > >> # ln -sf /usr/share/zoneinfo/Japan /etc/localtime
> > >> # ln -sf /usr/share/zoneinfo/GMT /etc/localtime
> > >> どれに切り替えても変化なく、正しい時刻を返します。
> > >> ntp を使った場合は、こういうものなのでしょうか?
> > >>
> > >> 何かアドバイスをいただけると幸いです。
> > >> よろしくお願いします。
> > >>
> > >> 黒田
> > >>
> > >
> > >
> > >
>

投稿者 xml-rpc : 2009年4月 9日 20:17
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/84070
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。