Версія 1 бета.

Збірка Gentoo з підтримкою юнікоду.

За мотивами:


Вступ

Що таке кодування символів

Комп'ютери не розуміють сам текст. Натомість кожний символ представляється як деяке число. Колись давно кожний набір чисел, що представляв алфавіт, тобто символи ( називавсь системами кодування: 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:

Література

--Svyat 23:39, 27 серп 2005 (EEST)