]> &header;

Так как осознание проблемы 2000 года (известной также под названием "ошибки тысячелетия") усиливается, все большее количество компаний требуют официальных заявлений от поставщиков их аппаратного и программного обеспечения о том, насколько корректно их оборудование воспримет переход в 2000 год.

Организации, использующие &unix; и Unix-подобные операционные системы типа FreeBSD, уже сделали один шаг вперёд в решении этой проблемы. FreeBSD многие годы будет корректно обрабатывать время после наступления 2000 года.>

Вводная информация

(Этот раздел основан на информации, найденной на странице Готовности Linux к Г2000)

Как это имеет место со всеми Unix и Unix-подобными операционными системами, время и даты во FreeBSD имеют внутреннее представление в виде числа секунд, прошедших с 1 января 1970 года ("век" Unix). В настоящее время это число хранится в виде 32-разрядного целого и исчерпает себя только к 2038 году. К тому времени мы уже (надеемся) будем использовать счетчик на 64 (или больше) разрядов, которого должно хватить до скончания мира.

Заметьте, что готовность ОС к Г2000 не означает, что приложения, не готовые к Г2000, будут работать корректно.

Заметьте также, что при работе ОС предполагается чтение текущей даты и времени из часов CMOS на вашем компьютере. Не все такие устройства корректно обрабатывают 2000 год. Советуем вам индивидуально протестировать каждую машину, чтобы убедиться, что ваши аппаратные часы ведут себя правильно при переходе от 1999 года к 2000. и что они правильно интерпретируют год 2000 как високосный.

Что вы можете сделать

FreeBSD будет продолжать правильно вести отсчет времени в следующем веке. Приложения третьих фирм, однако, могут этого и не сделать. Лучшей вашей защитой от проблем, связанных с 2000 годом, является хорошо продуманная атака. Выслушивание историй о предстоящем крахе мира, как мы его себе представляем, не решит проблему тысячелетия, как впрочем, и простое ожидание последнего часа. Проект FreeBSD рекомендует, чтобы ваша организация выработала некоторые принципиальные подходы к решению задач, касающихся проблемы Г2000.

Заявление FreeBSD по поводу Г2000

"После тщательного исследования и тестирования, мы полагаем, что FreeBSD является системой, готовой к Г2000 на 100%. В случае, если что-то было пропущено, мы приложим все усилия, чтобы исправить всё как можно скорее."

David Greenman
Principal Architect, The FreeBSD project

Исправленные проблемы

Во FreeBSD были найдены и исправлены следующие проблемы Г2000.

misc/1380
Некоторые программы имеют предопределенный формат 19%d для выдачи года. К таким программам относятся: yacc, ftpd, и make. [Исправлено: yacc v1.2 1999/01/18; ftpd v1.7 1996/08/05; make v1.4 1996/10/06; исправления касаются FreeBSD-2.2 и выше]
conf/1382
sed-скрипт в /etc/rc.local, вставляющий строку идентификации машины/ядра в сообщении дня, зависит от номера года и не работает после 1999.[Исправлено v1.21 1996/10/24; исправления касаются FreeBSD-2.2 и выше]
misc/3465
Команда etc/namedb/make-localhost генерирует серийный номер DNS в формате YYMMDD. В 2000 году, он будет иметь вид 1YYMMDD. [Исправлено v1.2 1997/08/11; исправления касаются FreeBSD-2.2.5 и выше]
gnu/4930 и gnu/8321
Макрос tmac для groff использует предопределенное число 19 для генерации некоторых дат. [Исправлено: tmac.e v1.3 1998/12/06; doc-common v1.10 1999/01/19; исправления касаются FreeBSD-3.1 и выше]
bin/9323
В своей устаревшей форме touch неправильно обрабатывает две цифры указываемого года. Даты в диапазоне 00-68 воспринимаются как 1900-1968, а не 2000-2068. [Исправлено v1.7 1999/01/05; исправления касаются FreeBSD-3.1 и выше]
xntpd/parse/util/dcfd.c
Вычисление високосного года для выяснения числа дней в году и преобразование времени DCF77 в число секунд, прошедших с начала Века выполнялись некорректно. Эти ошибки влияют на все года. [Исправлено v1.6 1999/01/12; исправления касаются FreeBSD-3.1 и выше]
tar/getdate.y
В функции Convert() было задано использование номера года, состоящего из двух цифр, для лет в диапазоне 70-99. Сейчас это исправлено, чтобы можно было использовать две цифры года для лет из диапазона 1970-2069. Функция не работает для круглых дат невисокосных лет - ошибка y2k1! [Исправлено v1.4 1999/01/12; исправления касаются FreeBSD-3.1 и выше]
fetch/http.c
Протокол HTTP описывает устаревший формат представления даты, в котором используются две цифры года. Предыдущие версии утилиты fetch будут интерпретировать все такие даты как относящиеся к 20 веку; что описано в последующем документе RFC 2068, что позволяет интерпретировать год из двух цифр как относящийся к текущем столетию, если до его конца осталось больше 50 лет. Так как серверов HTTP, которые используют старый формат, осталось не так уж много, вряд ли это вызовет значительные сложности. [Исправлено v1.24 1999/01/15; исправления касаются FreeBSD-3.1 и выше]
misc/9500
Скрипт `edithook' в каталоге CVSROOT использует значение tm_year непосредственно и поэтому будет выводить 01/01/100 для 2000-JAN-01. [Исправлено в v1.2 1999/01/17; не имеет отношения ни к какому релизу]
bin/9501
Некоторые из заимствованных файлов поставки cvs не совместимы с Г2000. Скрипты log.pl и sccs2rcs.csh добавляют `19' к номеру года, что приводит к выводу 19100 для 2000 года. Скрипт log_accum.pl в одном месте использует две цифры года, а в другом предполагает, что tm_year - это число лет, прошедших с начала столетия, а не с 1900 года. [Исправлено: log.pl v1.2 1999/01/15; sccs2rcs.csh v1.3 1999/01/15; исправления касаются FreeBSD-3.1 и выше]
bin/9502
Регистр `yr' утилиты groff, инициализируется из (struct tm).tm_year и поэтому представляет собой число лет, прошедших с 1900 года, а не с начала текущего века (смотрите определение в файле troff/input.cc). [Исправлено, сейчас устанавливается значение по модулю 100, troff/input.cc V1.2 1999/06/03; исправлено во FreeBSD-3.3]
bin/9503
В PicoBSD simple_httpd использует непосредственное значение tm_year и поэтому будет выводить 01/01/100 для 2000-JAN-01. [Исправлено в v1.2 1999/01/16; исправления касаются FreeBSD-3.1 и выше]
bin/9505
Утилита adduser использует непосредственное значение tm_year и поэтому будет выводить 100/01/01 для даты 2000-JAN-01. [Исправлено в v1.42 1999/01/15; исправления касаются FreeBSD-3.1 и выше]
bin/9506
Cron использует значение tm_year непосредственно и поэтому будет выводить значение 100 для 2000 года. [Fixed v1.7 1999/01/16]
bin/9507
Утилита tcpslice(8) использует значение tm_year непосредственно и поэтому будет выводить 100y01m01d... для 2000-JAN-01. Для достижения совместимости используйте две цифры года до 2000 года. [Исправлено в v1.8 1999/01/20; исправления касаются FreeBSD-3.1 и выше]
bin/14472
Команда date не воспринимает цифры, указывающие тысячи/сотни. [Исправлено в v1.31 1999/11/10]
misc/14511
В команде сhpass имеется проблема при использовании 00 для указания года истечения срока.
bin/15852, gnu/16045 и bin/16207
В программе groff имеется проблема с предопределённой строкой \*(DT [\*(td]. [Исправлено с включением версии 1.15 2000/01/12]
bin/15872
В программе at(1) имеется проблема с проверкой указания времени, когда при задании tm_year равным 100 выдаётся диагностика `garbled time'.
misc/16238
Установка KerberosIV работает некорректно, так как в исходных текстах Kerberos жёстко задано время 12/31/99 истечения срока работы генератора ключей. [Исправлено в v1.24 1999/09/19]

Дополнительная информация

Если у вас есть вопросы по поводу готовности FreeBSD к 2000 году или вы обнаружили приложение FreeBSD, которое не готово к 2000 году, пожалуйста, напишите нам по адресу freebsd-bugs@FreeBSD.org.

&footer;