%includes;
]>
&header;
2000 年問題 (別名, 「千年紀のバグ」)
に対する経営側の理解が深まるにつれ,
より多くの企業から, ハードウェアやソフトウェアのベンダに対して,
彼らの製品は 2000 年におこる転覆にどのように対処するのか,
公的な所信表明を要求する声が出てきています.
Unix や FreeBSD のような Unix like OS を使用している団体は,
既にその問題の一歩先を歩んでいます. FreeBSD は 2000
年が過ぎてだいぶたった後でも, 正しく時間を維持することができるでしょう.
予備知識
(この節は Linux Y2K compliance
page の文章に基づいたものです)
すべての Unix と Unix ライクなオペレーティングシステムと同じように,
FreeBSD における時間と日付は, 内部的には,
1970 年 1 月 1 日 (Unix の「紀元年」) からの秒数で表現されています.
現在のところ, この秒数は 32 bit 長の整数として格納されており,
2038 年とちょっとまで行ったところで使い果たされる計算になります.
おそらく, その頃には,
この宇宙の終わるときまで役に立つ, 64 bit 長の
(あるいはそれ以上の長さの) カウンタを使用しているでしょう.
2000 年問題に対応済の OS を使用したとしても, 2000 年問題に対応
していないアプリケーションが正しく動作するわけではありません.
注意してください.
また, OS が現在の日時や日付をコンピュータの CMOS
クロックから読み込んでいることにも注意してください.
それらのデバイスすべてが 2000 年を正しく扱えるわけではありません.
ハードウェアクロックが 1999 年から 2000 年へ正しく移行できること,
そして 2000 年を正しくうるう年として扱えることを,
各プラットフォームで個別に確かめた方が良いでしょう.
あなたにできること
FreeBSD は次の世紀に入っても,
正しく時間を維持し続けることができるでしょう. しかし,
サードパーティ製のアプリケーションはそうでないかもしれません.
2000 年問題に対しては, 攻撃は最大の防御と言えます.
おなじみの来るべき世界の終わりについての物語にただ耳をすましているだけでは,
千年紀のバグを解決することはできません.
ただその時が来るのを待っていても同じことです.
FreeBSD プロジェクトは, みなさんの組織が, 来たる千年紀に向け
しっかりしたシステム管理の原則を適用することをお勧めします.
お使いのシステムがどのように反応するか確認する方法があります.
クロックを新年の数分前に合わせ, システムの時間を観察して下さい.
システムは年として 1900 ではなく 2000 を表示しなければなりません.
そして, もし年の表示が不正確であっても,
ハードウェアをアップデートするのに十分な時間があるわけです.
また, クロックを先に進めたまま, 情報システムに日常の業務を行わせれば,
システムのどの部分が 2000 年問題に弱いのか,
価値ある洞察を得ることができます.
FreeBSD 2000 年問題所信表明
「広範囲にわたる分析と試験の結果, 我々は FreeBSD は 100%
2000 年に適合していると信じるに至りました.
不幸にも何かが見落とされていた場合でも,
我々は問題を可能な限りすみやかに解決できるようにベストを尽くします.」
David Greenman
Principal Architect, The
FreeBSD project
修正済の問題
FreeBSD 上では, 以下の 2000 年問題は既に発見され, 修正されています.
- misc/1380
- yacc, ftpd, make などの複数のプログラムが, 年の表示として 19%d
(訳注: C の書式指定文字列を使って, 1900 年代であると決め打ちしている)
を返すようにハードコードされていました.
[修正済: yacc v1.2 1999/01/18; ftpd v1.7 1996/08/05;
make v1.4 1996/10/06]
- conf/1382
- /etc/rc.local 内部の, ``message of the day''
のためにホスト / カーネル ID をビルドする sed スクリプトは,
年が 1999 以降にならないことに依存していました.
[修正済 v1.21 1996/10/24]
- misc/3465
- /etc/namedb/make-localhost コマンドは, DNS のシリアル番号を
YYMMDD の形式で生成しています. 2000 年には, この番号は
1YYMMDD の形式で生成されるでしょう.
[修正済 v1.2 1997/08/11]
- gnu/4930<
/dt>
- groff の tmac マクロは, ある種の日付を自動的に 1900
年代だと解釈するようにハードコードされていました.
[修正済: tmac.e v1.3 1998/12/06; doc-common v1.10 1999/01/19]
- bin/9323
- touch は, 旧形式で日付を与えた場合, 2 桁の年指定を正しく扱
えません. 00 から 68 までの年指定は, 2000 から 2068 ではなく
1900 から 1968 と解釈されます.
[修正済 v1.7 1999/01/05]
- xntpd/parse/util/dcfd.c
- UNIX における紀元の扱いが間違っているために, うるう年の日数
の計算, DCF77 形式の時間の変換が正しく行われません. このエラーは, 2000
年だけではなく, どの年でも問題となるものでした.
[修正済 v1.6 1999/01/12]
- tar/getdate.y
- Conver() 関数が 70-99 の 2 桁の年を扱うようにハードコードさ
れていました. 現在 2 桁の年数を 1970-2069 まで扱えるように変更されまし
た. ただ, 世紀を越える年がうるう年でない場合をサポートしていません.
[修正済 v1.4 1999/01/12]
- fetch/http.c
- HTTP プロトコルは年度を 2 桁で表す旧形式の日付フォーマットを
含んでいます. 以前のバージョンの fetch は, そのような 2 桁の年度を, す
べて 1900 年代と解釈していました. このバージョン以降は
RFC 2068
の記述に従い, 2 桁の年度は, 50 年以上先の場合を除き, その世紀の年度と
して扱われるようになりました. 旧形式の日付フォーマットを使用する HTTP
サーバは, だんだん使われなくなっているため, この不具合が深刻な問題を引
き起こすとはないでしょう.
[修正済 v1.24 1999/01/15]
- misc/9500
- CVSROOT ディレクトリにある `edithook' スクリプトは生の tm_year を
使用しているので, 2000 年 1 月 1 日 を 01/01/100 と表示するでしょう.
[修正済 v1.2 1999/01/17]
- bin/9501
- いくつかの cvs 配布ファイルは 2000 年に適合していません.
log.pl と sccs2rcs.csh スクリプトは年度に `19' をつけ加え,
その結果 2000 年を 19100 年と表示します. log_accum.pl
スクリプトは, あるところでは 2 桁の年度を使い, 別のところでは
tm_year が 1900 年からの年数を表すものではなく, むしろ今世紀の
年度を表すものであると仮定しています.
[修正済: log.pl v1.2 1999/01/15; sccs2rcs.csh v1.3 1999/01/15]
- bin/9502
- groff のナンバーレジスタ `yr' は, (struct tm).tm_year から割り当て
られているので, 今世紀の年度を表しているのではなく, 1900年からの年数を
表示します (troff/inpuut.cc 内の定義を見てください).
- bin/9503
- PicoBSD の simple_httpd は生の tm_year を使用しているので,
2000 年 1 月 1 日を 01/01/100 と表示するでしょう.
[修正済 v1.2 1999/01/16]
- bin/9505
- adduser は生の tm_year を使用しているので, 2000 年 1 月 1 日を
01/01/100 と表示するでしょう.
[修正済 v1.42 1999/01/15]
- bin/9506
- cron は生の tm_year を使用しているので, 2000 年を 100
と表示するでしょう.
[修正済 v1.7 1999/01/16]
- bin/9507
- tcpslice(8) は生の tm_year を使用しているので, 2000 年 1 月 1 日を
100y01m01d... と表示するでしょう. 互換性のために, 2000年までは 2 桁の
年度を使用します.
[修正済 v1.8 1999/01/20]
問題を含むアプリケーション
- ports/7681
- TkDesk 1.0 はファイルを表示するウィンドウで 19
を埋め込んで使用しています. 年が > 2000 であるファイルは,
"191xx" (xx には実際の年の末尾の二桁が入ります) のように表示されます.
このバグはバージョン 1.1 では修正されています.
[Port を更新 1998/10/10]
- ports/9295
- INN 1.7.2 には, 2 つの 2000 年関連の問題があります.
nntpget に -f オプションを使用してニュースを受け取る場合の問題と,
Expire ヘッダが, 2000 年より先になるように相対指定されたいる場合
の問題です.
[修正済 v1.30(inn と inn-stable のどちらも) 1999/01/13]
- ports/9298
- Knews には, 2 つの 2000 年関連の問題があります. NNTP
NEWGROUP コマンドを発行する際に発生する問題と, knews が
2000 年をうるう年と認識しない問題です.
[Port を更新 1999/01/07]
- ports/9300
- nntp-t5 は, NEWNEWS コマンドの生成に関する 2000 年問題があり
ます.
[Port を修正 1999/01/05]
- ports/11144
- tiff の port には 19xx とハードコーディングされた部分があります.
これは contrib のところにあり (Sun rasterfile format から
TIFF への変換), デフォルトではインストールされませんが,
パッチをあてる必要があります.
[Port を修正 1999/04/18]
- ports/11145
- dgs の port は tiff と同様の TIFF 関連の問題があります.
[contrib の Sun rasterfile からTIFF への変換ルーチンです]
[Port を修正 1999/04/18]
更なる情報
FreeBSD の 2000 年対応について更なる質問をお持ちであるか,
FreeBSD 下で走る 2000 年対応済でないアプリケーションを発見した場合,
freebsd-bugs@FreeBSD.ORG
まで連絡してください.
&footer;