%includes; ]> &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.

Есть некоторые тесты, которые вы можете произвести, чтобы посмотреть, реакцию вашей системы. Установите ваши часы на несколько минут до полуночи Нового Года и посмотрите системное время. Ваша система должна выдать год как 2000, а не 1900. Если год выводится неправильно, то у вас есть время для обновления аппаратного обеспечения. Работа информационных систем вашей организации в нормальном рабочем ритме, но с часами, установленными вперед, даст достаточную оценку вашей готовности к 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]

Проблемные приложения

ports/7681
TkDesk 1.0 использует предопределенное число 19 в окне вывода списка файлов. Файл с датой > 2000, выводится с датой, выглядящей как "191xx", где xx - последние две цифры настоящей даты. Эта ошибка была исправлена в версии 1.1.[Порт обновлен 1998/10/10; исправления касаются FreeBSD-3.0 и выше]
ports/9295
INN 1.7.2 подвержен влиянию ошибок, связанных с проблемой Г2000. Одна проявляется при скачивании телеконференций (опция -f в nntpget), а другая связана с заголовком Expire с относительными датами после 2000 года. [Оба порта INN обновлены до INN 2.2 1999/05/02; исправления касаются FreeBSD-3.2 и выше]
ports/9298
Knews имеет две ошибки, связанных с проблемой Г2000. Одна проявляется при генерации команды NNTP NEWGROUPS. Другая связана с тем, что knews не знает, что 2000 год является високосным. Обе ошибки исправлены в knews-1.0b.1. [Порт исправлен 1999/01/07; исправления касаются FreeBSD-3.1 и выше]
ports/9300
Nntp-t5 подвержен влиянию проблемы Г2000 во время генерации команды NEWNEWS. [Порт обновлен 1999/01/05; исправления касаются FreeBSD-3.1 и выше]
ports/11144
Порт tiff имеет вкомпилированную строку 19xx. Хотя это находится в разделе заимствований (для преобразования растрового формата Sun в TIFF) и не устанавливается по умолчанию, это приложение должно быть исправлено. [Порт обновлен 1999/04/18; а затем 1999/05/11; исправления касаются FreeBSD-3.2 и выше]
ports/11145
Порт dgs страдает от той же проблемы, связанной с TIFF, что и порт tiff [заимствованная процедура преобразования растровых файлов Sun в TIFF]. [Порт обновлен 1999/04/18; исправления касаются FreeBSD-3.2 и выше]
ports/13694
В работе порта slurp имеется проблема генерации корректно сформированного имени файла хоста, когда tm_year превышает 100. [Порт исправлен 1999/10/27; исправления касаются FreeBSD-3.3-STABLE и выше]
ports/15477
Порт wwwstat имеет жёстко заданной число 19.
ports/15789
В proftpd имеется маленькая проблема с Г2000. [Порт исправлен 1999/12/22]
ports/15820
В sendfile имеется ошибка, приводящая к тому, что для файлов, посланных после 1999 года, параметры atime и mtime устанавливаются неправильно.
ports/15854
dclock использует показания localtime и, в частности, значение tm_year не учитывается для 2000 года. [Порт исправлен 2000/01/04]
ports/15868
Функция генерации отчётов в программе hylafax (xferstats) не совместима с Г2000. [Порт исправлен 2000/01/24]
ports/15926
Ошибка, связанная с Г2000 в программе leafnode+ 2.9 приводит к тому, что входящие статью телеконференций со служебным заголовком (вообще говоря, ошибочным) Date: типа `Wed, 05 Jan 00 15:01:40 GMT' считаются слишком старыми, и отбрасываются. [Исправлено обновлением порта до версии 2.10 2000/01/24]
ports/16062
В приложении e2ps из категории japanese жёстко задано число 19. [Порт исправлен 2000/01/24]
ports/16073
В nntp версии 1.5.11.5 имеются проблемы, связанные с Г2000. [Порт был обновлён до версии 1.5.12.2 2000/01/12]
ports/16167
Это релиз, в котором исправлена ошибка Г2000 в INN 2.2.1, проявляющаяся в работе команд NEWNEWS и NEWGROUPS после 2000-01-01 00:00:00, когда указанная в качестве параметра дата лежит меньше 2000-01-01 00:00:00. [Порт обновлён до версии 2.2.2 2000/01/28]
NetHack 3.2.2 и более ранние версии не совместимы с Г2000 (файл результатов использует 2 цифры для обозначения года и портится, если обновляется в 2000 году). [Порт обновлён до версии 3.2.3 2000/01/05]
В программе mnews из категории japanese имеются проблемы, связанные с Г2000. [Порт обновлён до версии 1.22 1999/12/26]

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

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

&footer;