doc/ja/y2kbug.sgml
Jun Kuriyama 584157a711 Delete unused %rev.incl; lines.
Reviewed by:	hrs (on concept)
2000-10-31 19:33:00 +00:00

421 lines
17 KiB
Text

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
<!ENTITY date "$FreeBSD: www/ja/y2kbug.sgml,v 1.16 2000/02/19 12:23:56 kuriyama Exp $">
<!ENTITY title 'Year 2000 bug (aka "Millennium bug")'>
<!ENTITY % includes SYSTEM "includes.sgml"> %includes;
]>
<!-- $FreeBSD: www/ja/y2kbug.sgml,v 1.16 2000/02/19 12:23:56 kuriyama Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.35 -->
<html>
&header;
<p>2000 年問題 (別名, 「千年紀のバグ」)
に対する経営側の理解が深まるにつれ,
より多くの企業から, ハードウェアやソフトウェアのベンダに対して,
彼らの製品は 2000 年におこる転覆にどのように対処するのか,
公的な所信表明を要求する声が出てきています.</p>
<p>Unix や FreeBSD のような Unix like OS を使用している団体は,
既にその問題の一歩先を歩んでいます. FreeBSD は 2000
年が過ぎてだいぶたった後でも, 正しく時間を維持することができるでしょう.
<h2>予備知識</h2>
<p><i>(この節は <a
href="http://www.linux.org.uk/mbug.html">Linux Y2K compliance
page</a> の文章に基づいたものです)</i></p>
<p>すべての Unix と Unix ライクなオペレーティングシステムと同じように,
FreeBSD における時間と日付は, 内部的には,
1970 年 1 月 1 日 (Unix の「紀元年」) からの秒数で表現されています.
現在のところ, この秒数は 32 bit 長の整数として格納されており,
2038 年とちょっとまで行ったところで使い果たされる計算になります.
おそらく, その頃には,
この宇宙の終わるときまで役に立つ, 64 bit 長の
(あるいはそれ以上の長さの) カウンタを使用しているでしょう.</p>
<p>2000 年問題に対応済の OS を使用したとしても, 2000 年問題に対応
していないアプリケーションが正しく動作するわけではありません.
注意してください.
</p>
<p>また, OS が現在の日時や日付をコンピュータの CMOS
クロックから読み込んでいることにも注意してください.
それらのデバイスすべてが 2000 年を正しく扱えるわけではありません.
ハードウェアクロックが 1999 年から 2000 年へ正しく移行できること,
そして 2000 年を正しくうるう年として扱えることを,
各プラットフォームで個別に確かめた方が良いでしょう.</p>
<h2>あなたにできること</h2>
<p>FreeBSD は次の世紀に入っても,
正しく時間を維持し続けることができるでしょう. しかし,
サードパーティ製のアプリケーションはそうでないかもしれません.
2000 年問題に対しては, 攻撃は最大の防御と言えます.
おなじみの来るべき世界の終わりについての物語にただ耳をすましているだけでは,
千年紀のバグを解決することは<strong>できません</strong>.
ただその時が来るのを待っていても同じことです.
FreeBSD プロジェクトは, みなさんの組織が, 来たる千年紀に向け
しっかりしたシステム管理の原則を適用することをお勧めします.</p>
<p>お使いのシステムがどのように反応するか確認する方法があります.
クロックを新年の数分前に合わせ, システムの時間を観察して下さい.
システムは年として 1900 ではなく 2000 を表示しなければなりません.
そして, もし年の表示が不正確であっても,
ハードウェアをアップデートするのに十分な時間があるわけです.
また, クロックを先に進めたまま, 情報システムに日常の業務を行わせれば,
システムのどの部分が 2000 年問題に弱いのか,
価値ある洞察を得ることができます.</p>
<blockquote>
<strong>重要:</strong> これを生きたプロダクションシステム上で
しては<strong>ならない</strong>. あなたは日付に依存するような
アプリケーション(勘定請求システム, バックアップ体制, 等々)を
混乱させるかも知れない. 常に, あなたが持っているであろう
生きたデータに影響できない開発システム上で,
この様なもののテストを行いなさい.
</blockquote>
<h2>FreeBSD 2000 年問題所信表明</h2>
<blockquote>
<p>「広範囲にわたる分析と試験の結果, 我々は FreeBSD は 100%
2000 年に適合していると信じるに至りました.
不幸にも何かが見落とされていた場合でも,
我々は問題を可能な限りすみやかに解決できるようにベストを尽くします.」</p>
<p align="right">David Greenman<br>Principal Architect, The
FreeBSD project</p>
</blockquote>
<h2>修正済の問題</h2>
<p>FreeBSD 上では, 以下の 2000 年問題は既に発見され, 修正されています.</p>
<dl>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=1380">misc/1380</a>
</dt>
<dd>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; FreeBSD-2.2 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=1382">conf/1382</a>
</dt>
<dd>/etc/rc.local 内部の, ``message of the day''
のためにホスト / カーネル ID をビルドする sed スクリプトは,
年が 1999 以降にならないことに依存していました.
[修正済 v1.21 1996/10/24; FreeBSD-2.2 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=3465">misc/3465</a>
</dt>
<dd>/etc/namedb/make-localhost コマンドは, DNS のシリアル番号を
YYMMDD の形式で生成しています. 2000 年には, この番号は
1YYMMDD の形式で生成されるでしょう.
[修正済 v1.2 1997/08/11; FreeBSD-2.2.5 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=4930">gnu/4930</a> and
<a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=8321">gnu/8321</a></dt>
<dd>groff の tmac マクロは, ある種の日付を自動的に 1900
年代だと解釈するようにハードコードされていました.
[修正済: tmac.e v1.3 1998/12/06; doc-common v1.10 1999/01/19;
FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9323">bin/9323</a></dt>
<dd>touch は, 旧形式で日付を与えた場合, 2 桁の年指定を正しく扱
えません. 00 から 68 までの年指定は, 2000 から 2068 ではなく
1900 から 1968 と解釈されます.
[修正済 v1.7 1999/01/05; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.sbin/xntpd/parse/util/dcfd.c">xntpd/parse/util/dcfd.c</a></dt>
<dd>UNIX における紀元の扱いが間違っているために, うるう年の日数
の計算, DCF77 形式の時間の変換が正しく行われません. このエラーは, 2000
年だけではなく, どの年でも問題となるものでした.
[修正済 v1.6 1999/01/12; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/gnu/usr.bin/tar/getdate.y">tar/getdate.y</a></dt>
<dd>Conver() 関数が 70-99 の 2 桁の年を扱うようにハードコードさ
れていました. 現在 2 桁の年数を 1970-2069 まで扱えるように変更されまし
た. ただ, 世紀を越える年がうるう年でない場合をサポートしていません.
[修正済 v1.4 1999/01/12; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.bin/fetch/http.c">fetch/http.c</a></dt>
<dd>HTTP プロトコルは年度を 2 桁で表す旧形式の日付フォーマットを
含んでいます. 以前のバージョンの fetch は, そのような 2 桁の年度を, す
べて 1900 年代と解釈していました. このバージョン以降は
<a href="ftp://ftp.cdrom.com/pub/internet/rfc/rfc2068.txt">RFC 2068</a>
の記述に従い, 2 桁の年度は, 50 年以上先の場合を除き, その世紀の年度と
して扱われるようになりました. 旧形式の日付フォーマットを使用する HTTP
サーバは, だんだん使われなくなっているため, この不具合が深刻な問題を引
き起こすとはないでしょう.
[修正済 v1.24 1999/01/15; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9500">misc/9500</a></dt>
<dd>CVSROOT ディレクトリにある `edithook' スクリプトは生の tm_year を
使用しているので, 2000 年 1 月 1 日 を 01/01/100 と表示するでしょう.
[修正済 v1.2 1999/01/17; FreeBSD のリリースには関係なし]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9501">bin/9501</a></dt>
<dd>いくつかの 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;
FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9502">bin/9502</a></dt>
<dd>groff のナンバーレジスタ `yr' は, (struct tm).tm_year から割り当て
られているので, 今世紀の年度を表しているのではなく, 1900年からの年数を
表示します (troff/inpuut.cc 内の定義を見てください).
[修正済 mod 100 にセットされています, troff/input.cc V1.2 1999/06/03;
FreeBSD-3.3 で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9503">bin/9503</a></dt>
<dd>PicoBSD の simple_httpd は生の tm_year を使用しているので,
2000 年 1 月 1 日を 01/01/100 と表示するでしょう.
[修正済 v1.2 1999/01/16; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9505">bin/9505</a></dt>
<dd>adduser は生の tm_year を使用しているので, 2000 年 1 月 1 日を
01/01/100 と表示するでしょう.
[修正済 v1.42 1999/01/15; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9506">bin/9506</a></dt>
<dd>cron は生の tm_year を使用しているので, 2000 年を 100
と表示するでしょう.
[修正済 v1.7 1999/01/16; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9507">bin/9507</a></dt>
<dd>tcpslice(8) は生の tm_year を使用しているので, 2000 年 1 月 1 日を
100y01m01d... と表示するでしょう. 互換性のために, 2000年までは 2 桁の
年度を使用します.
[修正済 v1.8 1999/01/20; FreeBSD-3.1 以降で修正済]</dd>
<dt><a href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=14472">
bin/14472</a></dt>
<dd>date コマンドは千年/百年の桁を指定できません.
[修正済 v1.31 1999/11/10]
</dd>
<dt><a href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=14511">
misc/14511</a></dt>
<dd>chpass は有効期限の年に 00 を指定した場合の処理に問題があります.
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15852">bin/15852</a>,
<a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16045">gnu/16045</a>,
<a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16207">bin/16207</a>
</dt>
<dd>\*(DT [\*(td] 文字列を定義してある Groff には 2000 年問題があります.
[v1.15 の import により修正済 2000/01/12]
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15872">bin/15872</a></dt>
<dd>at(1) には, tm_year が 100 の場合, 有効な時間指定が `不正な時刻'
という報告を返すという問題があります
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16238">misc/16238</a></dt>
<dd>KerberosIV のインストールがきちんと動作しません.
これは, チケット認証期限が 12/31/99 というように,
ハードコーディングされた部分がソースプログラム中にあるためです.
[修正済 v1.24 1999/09/19]
</dd>
</dl>
<h2>問題を含むアプリケーション</h2>
<dl>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=7681">ports/7681</a></dt>
<dd>TkDesk 1.0 はファイルを表示するウィンドウで 19
を埋め込んで使用しています. 年が &gt 2000 であるファイルは,
"191xx" (xx には実際の年の末尾の二桁が入ります) のように表示されます.
このバグはバージョン 1.1 では修正されています.
[Port を更新 1998/10/10; FreeBSD-3.0 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9295">ports/9295</a></dt>
<dd>INN 1.7.2 には, 2 つの 2000 年関連の問題があります.
nntpget に -f オプションを使用してニュースを受け取る場合の問題と,
Expire ヘッダが, 2000 年より先になるように相対指定されたいる場合
の問題です.
[INN の ports は両方とも INN 2.2 にupgradeされた 1999/05/02;
FreeBSD-3.2 以降で修正済]</dd>
<dt><a href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9298">ports/9298</a></dt>
<dd>Knews には, 2 つの 2000 年関連の問題があります. NNTP
NEWGROUP コマンドを発行する際に発生する問題と, knews が
2000 年をうるう年と認識しない問題です.
[Port を更新 1999/01/07; FreeBSD-3.1 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9300">ports/9300</a></dt>
<dd>nntp-t5 は, NEWNEWS コマンドの生成に関する 2000 年問題があり
ます.
[Port を修正 1999/01/05; FreeBSD-3.1 以降で修正済]</dd>
<dt><a href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=11144">ports/11144</a></dt>
<dd>tiff の port には 19xx とハードコーディングされた部分があります.
これは contrib のところにあり (Sun rasterfile format から
TIFF への変換), デフォルトではインストールされませんが,
パッチをあてる必要があります.
[Port を修正 1999/04/18; upgrade でフォロー済 1999/05/11;
FreeBSD-3.2 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=11145">ports/11145</a></dt>
<dd>dgs の port は tiff の port と同様の TIFF 関連の問題があります.
[contrib の Sun rasterfile からTIFF への変換ルーチンです]
[Port を修正 1999/04/18; FreeBSD-3.2 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=13694">ports/13694</a></dt>
<dd>slurp の port は tm_year が 100 より大きいときに
正しくフォーマットされた host ファイル名の生成に問題があります.
[Port を修正 1999/10/27; FreeBSD-3.3-STABLE 以降で修正済]</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15477">ports/15477</a></dt>
<dd>wwwstat の ports には, 19(訳注: もちろん, 1900 年の上位桁のことです)
がハードコーディングされています.
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15789">ports/15789</a></dt>
<dd>proftpd には, ちょっとした Y2K 問題があります.
[Port は修正済 1999/12/22]
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15820">ports/15820</a></dt>
<dd>sendfile には 1999 年以降に送られたファイルの atime と mtime を
適切な値にセットしないという問題があります.
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15854">ports/15854</a></dt>
<dd>dclock は localtime と, 特に 2000 年を考慮していない tm_year への
参照を使います. [Ports は修正済 2000/01/04]
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15868">ports/15868</a></dt>
<dd>hylafax(xferstats)の出力関数は 2000 年問題に対応していません.
[Ports は修正済 2000/01/24]
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15926">ports/15926</a></dt>
<dd>leafnode+ 2.9 の 2000 年問題は,
取得したニュース記事が(有効でない)`Wed, 05 Jan 00 15:01:40 GMT'
のような Date: へッダを持っていると,
それは古すぎるものと判断されてしまって
取得した記事が削除されてしまう, というものです.
[Ports を version 2.10 に更新することで修正済 2000/01/24]
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16062">ports/16062</a></dt>
<dd>日本語版 e2ps の Ports には, 19 がハードコーディングされています.
[Ports は修正済 2000/01/24]
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16073">ports/16073</a></dt>
<dd>Ports の nntp の 1.5.11.5 には 2000 年問題があります.
[Ports を version 1.5.12.2 に更新することで修正済 2000/01/12]
</dd>
<dt><a
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16167">ports/16167</a></dt>
<dd>これは, INN 2.2.1 に含まれる 2000 年問題を修正したリリースです.
この問題は, 2000-01-01 00:00:00 以降で NETNEWS, NEWGROUPS コマンドに
2000-01-01 00:00:00 以前の日付を指定すると表面化します.
[Ports を version 2.2.2 に更新することで修正済 2000/01/28]
</dd>
<dd>NetHack 3.2.2 とそれ以前のバージョンは, 2000 年問題に対応していません
(スコアファイルは 2 桁の年数を使っていているため,
2000 年以降にでは壊れてしまうでしょう).
[Ports を version 3.2.3 に更新することで修正済 2000/01/05]
</dd>
<dd>日本語版の mnews の Ports には 2000 年問題があります.
[ports を version 1.22 に更新することで修正済 1999/12/26]
</dd>
</dl>
<h2>更なる情報</h2>
<p>FreeBSD の 2000 年対応について更なる質問をお持ちであるか,
FreeBSD 下で走る 2000 年対応済でないアプリケーションを発見した場合,
<a href="mailto:freebsd-bugs@FreeBSD.ORG">freebsd-bugs@FreeBSD.ORG</a>
まで連絡してください.</p>
&footer;
</body>
</html>
<!--
Local Variables:
mode: sgml
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
End:
-->