Linux /usr/share/zoneinfo/ プラットフォームは独立していますか?

Linux /usr/share/zoneinfo/ プラットフォームは独立していますか?

私は組み込みLinux(ARM / busybox)システムを使用しています。 systemd および timedatectl システム実行ファイルはありますが、/etc/timezone、/usr/share/zoneinfo、または zic タイムゾーンデータコンパイラはありません。

この組み込みシステムには十分なシステムディスク容量があります。

timedatectlが提供するタイムゾーン機能にアクセスするために、/usr/share/zoneinfoの内容をamd64 Linux実装から私の組み込みARM Linux実装に「現状のまま」コピーできますか?

ご協力ありがとうございます。

ベストアンサー1

はい、バイナリタイムゾーンファイルはプラットフォームに依存しません。

例えば、Wikipediaの記事「tzデータベース」:

tzデータベースは、人間が読める形式でルールとゾーン変換を一覧表示する一連のテキストファイルとして公開されています。使用のために、これらのテキストファイルは次のセットにコンパイルされます。プラットフォーム独立バイナリ- 時間帯別に一つずつ。参照ソースコードには、zic(Zone Information Compiler)と呼ばれるコンパイラと、これらのファイルを読み取るなどlocaltime()の標準APIで使用されるコードが含まれていますmktime()

バイナリ形式自体はマンページに文書化されています。tzファイル(5)そしてRFC 8536:

tzset(3) で使用されるタイムゾーン情報ファイルは、通常 /usr/share/zoneinfo と同様の名前のディレクトリにあります。これらのファイルは、インターネットRFC 8536に記載されている形式を使用します。各ファイルは8ビットバイトのシーケンスです。ファイル内のバイナリ整数は、ネットワークシーケンス(bigendianまたは上位バイトから)に基づいて1つ以上のバイトシーケンスとして表されます。 [...]

読書ライブラリがはるかに古くなっている場合はzic、次のことによって一部の非互換性が発生する可能性があります。zic実行時に使用されるパラメータ:

-b bloat は、
bloat で指定された以前のバージョンと互換性のあるデータを出力します。拡張が深刻な場合は、追加のデータ項目を生成して64ビット生成データを誤って処理するソフトウェアなど、以前のソフトウェアの潜在的なバグや非互換性を解決してください。拡張が小さい場合は、出力ファイルを小さく保つことで、バグと非互換性を確認するのに役立ちます。現在のデフォルトは太っていますが、将来のzicバージョンでは変更される予定です。 64ビットデータを誤って処理するソフトウェアは、2038年以降タイムスタンプを誤って処理することが多いためです。出力サイズを小さくする他の方法については、-rオプションも参照してください。

おすすめ記事