Поддержка локалей в NetBSD 3.1
Итак, выкладываю обещанный патч с полной поддержкой локалей для NetBSD 3.1. Подозреваю, что должно работать и для 3.0, но проверить негде, а под vmware её ставить пока времени нету. Дополнительно к штатному LC_CTYPE реализована поддержка LC_COLLATE, LC_TIME, LC_MESSAGES, LC_NUMERIC и LC_MONETARY. Портировано с FreeBSD 6.
Сразу скажу, что патч писался исключительно для служебных целей и поэтому обладает единственным свойством - он успешно ставится поверх дерева сорцов _И_ работающей системы, после чего успешно работает. Багов за почти год на боевой системе с высокой нагрузкой замечено не было.
Никаких мануалов, сорцов локалей, мэйков для них и т.п. не портировалось ввиду недостатка времени.
Также следует заметить, что не все локали в бинарном виде можно копировать - формат того же LC_TIME отличается от принятого в FreeBSD (я не стал менять внутренние структуры данных libc, так как это не нужно и было бы слишком геморройно - в штатном варианте они вполне достаточны). В силу этого и некоторых других соображений патч оформлен не в виде unified diff, а просто в виде набора файлов.
При наличии желания разобраться в том, как оно работает можно без проблем, плюс я с удовольствием отвечу на все вопросы.
В комплект входят следующие локали в скомпилированном виде:
en_US.ISO8859-1 en_US.UTF-8 ru_RU.CP1251 ru_RU.CP866 ru_RU.ISO8859-5 ru_RU.KOI8-R ru_RU.UTF-8
Итак, приступим. Для начала надо установить почти все исходники системы - потребуются архивы src.tgz, gnusrc.tgz, sharesrc.tgz и syssrc.tgz, которые можно взять на ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.1/source/sets. Дальше кладём патч из вложения к статье в /usr/ и распаковываем его поверх:
# cd /usr # tar zxvf netbsd-locale.tar.gz
Патч обновляет каталоги include, share и src, частично заменяя файлы, а частично добавляя. На всякий случай он содержит также и оригинальные версии файлов, с расширением .orig.
После этого _собираем_ toolchain и libc:
# cd /usr/src # . ./build.sh tools # cd /usr/src/lib/libc # make
Теперь можно устанавливать новый libc. Делать это следует _ТОЛЬКО_ командой mv, иначе вы рискуете поиметь _ОЧЕНЬ_ много геморроя:
mv libc.so.12.128.2 /lib/libc.so.12.128.2
Всё! При желании можно собрать ещё colldef, который позволит компилировать файды LC_COLLATE из исходников FreeBSD (их формат идентичен принятому в FreeBSD):
# cd /usr/src/usr.bin/colldef # make # make install
Вроде ничего не забыл. Будут вопросы - задавайте :)
| Прикрепленный файл | Размер |
|---|---|
| netbsd-locale.tar.gz | 27.41 кб |
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 2782 просмотра
тупой вопрос: а
тупой вопрос: а в каррент этого ещё нет? Если нет, может быть стоит нэтбсдшникам предложить сей патч?
в current только
в current только lc_time (появилась недавно) и lc_ctype (изначально). я бы предложил, самому заниматься некогда :( говорил с людьми, которые готовы это сделать, но они утверждают, что для этого надо делать полноценный патч одним диффом, с мануалами и так далее. на это опять же, нет времени :((
ясно... А под
ясно...
А под OpenBSD это сложно будет заставить работать?
У меня сейчас NetBSD 3.0, долго откладывал сей геморрой, но если возьмусь, то скорей всего пойду в сторону OpenBSD, чем NetBSD 3.1 (а там та же проблема с локалями...).
в принципе -
в принципе - можно и под OpenBSD заставить.
а почему OpenBSD, если не секрет? оно же медленное, у нетки ядро существенно быстрее, да и сорцы поаккуратнее :))
Цитата:в
Да, OpenBSD медленное, но для меня безопасность важнее...
Сорцы netbsd мб и поаккуратнее в смысле читабельности, но уж не в плане секъюрности. Пусть obsd работает и не быстро, но надёжно... задолбало что netbsd считают в порядке вещей ничего не отвечать на багрепорты в отличие, по крайней мере, от freebsd. Сейчас народ говорит что с фри я "просто неудачно попал" - типа, "неудалась у них 5я ветка..." Я не знаю, но возвращаться не хочется. И вообще динамика netbsd мне что-то не очень... вялотекущее, слабопрогрессирующее, баги... Я имею в виду баги в базовой системе. Может потом и вернусь, но пока нет. Кому-то может net больше понравится. Следует отметить изначальную постановку задачи: в жертву можно принести почти всё ради лучшей защиты. В такой постановке net не в лучшем ракурсе.
У нас просто
У нас просто основной критерий скорость и надёжность. В этом плане нетку выбрали именно на базе большого количества секса с фрями - в пятёрке и шестёрке вообще что-то страшное творится. А с динамикой нетки какие-то странности, причём чем дальше, тем страннее :(( Смущает в первую очередь отсутствие четвёрки. Сорцы там уже давно не меняются. На массовые багофиксы тоже не похоже...
Хоть свой дистрибутив делай =)
Я очень близко
Я очень близко знаком с фрёй и с net. На фрю возвращаться не буду точно. Либо net либо open. Вообще, "фря опопсела", инсталлятор кривоват, много лишнего, порты работают как попало... Net стройнее и логичней. Но косяки и тут. Так чтов пределе думаю будет либо open либо net. Если вам нужна скорость то чем не устраивает gentoo? Не сильно стабильно? если речь идёт о производительных серверах то всё циклится на smp и скорость фс, и в итоге выигрыш не у bsd, а драгонфлай думаю ещё сыроват. Как я понимаю, традиционной нищей BSD всегда была надёжность а не скорость. Бенчмарки и рекорды лучше бить на линухах ;-)
делаю все как
делаю все как написано в статье, но дойдя до ./build.sh tools выдает:
./build.sh premission denied
че делать?
build.sh исполним?
build.sh исполним?
вобщем я сделал
вобщем я сделал sh build.sh tools, а он выдал что нет каталога /usr/obj и его действительно нету...