Версія 1 бета.
Збірка Gentoo з підтримкою юнікоду.
За мотивами:
- http://forum.gentoo.org.ua/index.php?showtopic=14
- http://www.gentoo.org/doc/en/utf-8.xml
- http://lists.gnu.org/archive/html/groff/2005-07/msg00006.html
Вступ
Що таке кодування символів
Комп'ютери не розуміють сам текст. Натомість кожний символ представляється як деяке число. Колись давно кожний набір чисел, що представляв алфавіт, тобто символи ( називавсь системами кодування: ASCII, koi8-u, ibm866, iso8859-5, cp1251 ) був обмежений у розмірі одним байтом, що зумовлювалось обмеженою потужністю старих комп'ютерів.
Юнікод
Юнікод переступає старе обмеження кодування символів одним байтом. Замість того використовує 17 біт, які визначають 65,536 кодів і дає можливість описати максимум 1 114 112 різних символів. Basic Multilingual Plane (BMP) - Базовий Багатомовний План, містить майже всі символи, що Ви будете коли-небудь використовувати.
Юнікод має декілька реалізацій, але найпоширенішими є дві: UTF (Unicode Transformation Format) - Формат Перетворення Юнікоду та UCS (Universal Character Set) - Універсальна Таблиця Символів. Число після UTF визначає кількість біт виділених під один юніт, а число після UCS визначає кількість байт. UTF-8 став найбільш поширеним для інтернаціональних кодувань.
UTF-8
UTF-8 є системою кодування з змінною довжиною кодування символів, це означає що для кодування символів у UTF-8 використовується від одного до чотирьох байт на символ. Якщо символ належить до перших 127 символыв кодування ASCII, тоді він кодується одним байтом, що дає повну сумісність з ASCII. Перекодування з ASCII у UTF-8 для латинських символів дуже незначною мірою, збільшить розмір даних, бо використовується тільки перший байт. В інших мовах де для кодування мусять використовуватися більше байтів, розмір тексту при перекодуванні збільшиться вдвічі.
UTF-8 є стандартом кодування символів за замовчуванням w3c, дозволяє всім мовам мати єдине кодування при найменшому збільшенню об'єму даних.
Налаштування UTF-8 в Gentoo
Найкраще одразу, ще перед початком встановлення Gentoo, вирішити прийняти за базове кодування символів у системі UTF-8.
Конфігурація профайлу
# cat /etc/portage/package.use
...
app-misc/mc slang -ncurses ...
sys-libs/glibc userlocales ...
# cat /etc/make.conf
...
USE=".... nls unicode...."
LINGUAS="be uk ru us"
# cat /etc/locales.gen
# не всі з локалей повністю збудуються
be_BY.UTF-8/UTF-8
en_BY.UTF-8/UTF-8
en_GB.UTF-8/UTF-8
en_RU.UTF-8/UTF-8
en_UA.UTF-8/UTF-8
en_US.UTF-8/UTF-8
ru_BY.UTF-8/UTF-8
ru_RU.UTF-8/UTF-8
ru_UA.UTF-8/UTF-8
uk_RU.UTF-8/UTF-8
uk_UA.UTF-8/UTF-8
Тепер можна виконувати bootstrap.sh i emerge system
Коли це робоча система і нема бажання перезібрати glibc то можна локалі яких немає (#locale -a | grep ua) до зібрати:
# localedef --no-archive -c -i uk_UA -f UTF-8 uk_UA
Компіляція ядра Лінукс
Детальна інформація: ?Компіляція ядра GNU/Linux Особливу увагу звернути на розділ: File Systems --> Native Language Support --> де відмітити вказані опції.
Native Language Support --->
--- Base native language support
(UTF8) Default NLS Option
<*> Codepage 437 (United States, Canada)
< > Codepage 737 (Greek)
< > Codepage 775 (Baltic Rim)
< > Codepage 850 (Europe)
< > Codepage 852 (Central/Eastern Europe)
<*> Codepage 855 (Cyrillic)
< > Codepage 857 (Turkish)
< > Codepage 860 (Portuguese)
< > Codepage 861 (Icelandic)
< > Codepage 862 (Hebrew)
< > Codepage 863 (Canadian French)
< > Codepage 864 (Arabic)
< > Codepage 865 (Norwegian, Danish)
<*> Codepage 866 (Cyrillic/Russian)
< > Codepage 869 (Greek)
< > Simplified Chinese charset (CP936, GB2312)
< > Traditional Chinese charset (Big5)
< > Japanese charsets (Shift-JIS, EUC-JP)
< > Korean charset (CP949, EUC-KR)
< > Thai charset (CP874, TIS-620)
< > Hebrew charsets (ISO-8859-8, CP1255)
< > Windows CP1250 (Slavic/Central European Languages)
<*> Windows CP1251 (Bulgarian, Belarusian)
<*> ASCII (United States)
<*> NLS ISO 8859-1 (Latin 1; Western European Languages)
< > NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages)
< > NLS ISO 8859-3 (Latin 3; Esperanto, Galician, Maltese, Turkish)
< > NLS ISO 8859-4 (Latin 4; old Baltic charset)
<*> NLS ISO 8859-5 (Cyrillic)
< > NLS ISO 8859-6 (Arabic)
< > NLS ISO 8859-7 (Modern Greek)
< > NLS ISO 8859-9 (Latin 5; Turkish)
< > NLS ISO 8859-9 (Latin 5; Turkish)
< > NLS ISO 8859-13 (Latin 7; Baltic)
< > NLS ISO 8859-14 (Latin 8; Celtic)
< > NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
<*> NLS KOI8-R (Russian)
<*> NLS KOI8-U/RU (Ukrainian, Belarusian)
<*> NLS UTF8
можна обійтись однією UTF8 решта для історії і сумісності з старими fs.
Встановлення шрифтів
Встановимо додаткові шрифти:
media-fonts/terminus-font
media-fonts/intlfonts
media-fonts/freefonts
media-fonts/cronyx-fonts
media-fonts/corefonts
media-fonts/artwiz-fonts
#emerge terminus-font intlfonts freefonts cronyx-fonts corefonts artwiz-fonts
Налаштування файлів конфігурації
# cat /etc/rc.conf
UNICODE="yes"
# cat /etc/conf.d/consolefont
CONSOLEFONT="ter-v14n"
#CONSOLEFONT="ter-v16n"
# cat /etc/conf.d/keymaps
KEYMAP="ua-utf-ws"
#KEYMAP="ua"
SET_WINDOWKEYS="yes"
EXTENDED_KEYMAPS=""
#DUMPKEYS_CHARSET="koi8-u"
Перевантажуємо сервіси які ми налаштували:
#/etc/init.d/keymaps restart
#/etc/init.d/consolefont restart
Для встановлення Української локалі:
$ cat ~/.bashrc
LC_ALL=""
LANG=uk_UA.UTF-8
Перевіряємо локаль
$ locale
LANG=uk_UA.UTF-8
LC_CTYPE="uk_UA.UTF-8"
LC_NUMERIC="uk_UA.UTF-8"
LC_TIME="uk_UA.UTF-8"
LC_COLLATE="uk_UA.UTF-8"
LC_MONETARY="uk_UA.UTF-8"
LC_MESSAGES="uk_UA.UTF-8"
LC_PAPER="uk_UA.UTF-8"
LC_NAME="uk_UA.UTF-8"
LC_ADDRESS="uk_UA.UTF-8"
LC_TELEPHONE="uk_UA.UTF-8"
LC_MEASUREMENT="uk_UA.UTF-8"
LC_IDENTIFICATION="uk_UA.UTF-8"
LC_ALL=
Програми
Х термінали з підтримкою юнікода
x11-term/uxterm
x11-term/rxvt-unicode
x11-term/mlterm
x11-term/xterm
Мінімальні версії програм
Перезібрати до версій:
>=sys-libs/ncurses-5.4-r5
>=sys-libs/slang-1.4.9-r1
>=app-misc/mc-4.6.0-r11
>=groff 1.18.1
man, groff, less, manpages-uk-utf8 в локалях *.utf8
Існує багато шляхів як заставити нормально працювати інтернаціональні сторінки підручника в локалі UTF-8. На мою думку, на сьогоднішній день, найвірнішим є встановлення сторінок підручника в кодуванні саме UTF-8 та "налаштуванні" man, groff, less для роботи з юнікодом.
Отож встановлюємо Сторінки Підручника Юнікс Українською в кодуванні UTF-8:
# emerge manpages-uk-utf8
Також можна зробити архів манів самому з допомогою програми wiki2man.
Перевстановіть man (необов'язково)
# emerge man
або якщо не хочете перевстановлювати man щоб спочатку шукалася сторінка підручника українською мовою виконайте:
# export MANPATH=/usr/share/man/uk:/usr/share/man/ru:$MANPATH
І для автоматичного встановлення цієї змінної при старті виконайте:
# echo "MANPATH=/usr/share/man/uk:/usr/share/man/ru:$MANPATH" >> ~/.bashrc
Тепер потрібно заставити groff працювати з юнікодом. Поновіть groff до >=groff 1.18.1 так, як остання версія що стоїть у мене groff 1.19.1 ще самостійно не працює з UTF-8, тягнемо groff-utf8.tar.gz Перейменовуємо його нормально та встановлюємо:
# mv bineYgga7Cm9p.bin groff-utf8.tar.gz
# tar xvfz groff-utf8.tar.gz
# cd groff-utf8
# make
# make install PREFIX=/usr/local
Підправимо man (в мене стоїть версія man-1.5p) з урахуванням оновленого groff-utf8:
# cat /etc/man.conf
TROFF /usr/local/bin/groff-utf8 -Tutf8 -mandoc
NROFF /usr/local/bin/groff-utf8 -Tutf8 -mandoc
PAGER /usr/bin/less -is
Для нормальної роботи команди less (в мене стоїть версія less-382-r2) достатньо встановити змінну LESSCHARSET. Для цього в консолі виконати команду:
# export LESSCHARSET=utf-8
І для автоматичного встановлення цієї змінної при старті виконайте:
# echo 'export LESSCHARSET=utf-8' >> ~/.bashrc
Якщо у Вас вже були встановлені сторінки підручника на інших мовах (наприклад російські з пакету manpages-ru) їх необхідно всіх переконвертувати в UTF-8. З цим завданням чудово справиться скрипт: ?man encode converter.sh
Тепер можна насолоджуватись рідними манами 8-)
PS:
- ?Проект манів українською.
- Програми wiki2man що генерують manpages-uk.
Література
- ?Українізація Linux
- http://linux.org.ua/cgi-bin/twiki/view/Locale/LocalizationTechnology
--Svyat 23:39, 27 серп 2005 (EEST)