The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Локалзация"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Русификация / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Локалзация"  +/
Сообщение от heliser email(ok) on 19-Апр-12, 11:36 
Система FreeBSD 8.1-RELEASE-p1 работает как firewall и proxy. GUI нет.
Понадобилась русская локаль в связи с тем, что планирую поднять на ней еще и самбу.
Проблема в следующем.
Переключение с русского на латиницу происходит. То есть русские буквы печатает, а русские надписи не отображает. Например, даешь какую-нибудь некорректную команду и жмешь enter - пишет в ответ что-то типа -bash: gfhfjhf: и далее строка псевдографики. Здесь gfhfjhf это и есть некорректная команда. Например, команда ls -l отображает названия месяцев по английски. Не работает таже локализация и в mc. Причем ситуация нестабильна. Не могу просечь почему. В результате плясок с бубном. Локализация иногда появляется такая какая нужна. Но после reboot все опять возвращается на круги своя. При удаленном входе через ssh c linux машины или putty все нормально работает кроме mc. Да, заметил, что под шелом sh почему-то иногда локализация идет, а под bash нет, поэтому копал и в этом направлении изменял переменные окружения для bash.
Отрывок из /etc/rc.conf
---------------------------------------------------------------------
scrnmap="koi8-r2cp866"
mousechar_start="3"
font8x8="cp866-8x8"
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
keymap="ru.koi8-r.win"
keyrate="fast"
----------------------------------------------------------------------
Отрывок из /etc/profile
-----------------------------------------------------------------------
LANG=ru.KOI8-R
export LANG
MM_CHARSET=KOI8-R
-----------------------------------------------------------------------
Отрывок из /etc/ttys
------------------------------------------------------------------------
ttyv0   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv1   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25r on  secure
-------------------------------------------------------------------------
Далее создал юзера  и пркрутил к нему файл /home/личный_каталог/.inputrc следующего содержания
-------------------------------------------------------------------------
set meta-flag on
set convert-meta off
set output-meta on
--------------------------------------------------------------------------
Указанные настройки нарыл из разных источников, например из
https://www.opennet.ru:8101/base/rus/freebsd_rus.txt.html
Может и еще чего сделал - не все помню.
Подскажите куда копать
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Локалзация"  +/
Сообщение от михалыч (ok) on 19-Апр-12, 12:58 
А если так?

/etc/rc.conf

font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
keymap="ru.koi8-r"
mousechar_start="3"
scrnmap="koi8-r2cp866"


/etc/ttys

ttyv0   "/usr/libexec/getty Pc"         cons25r on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25r on  secure


/etc/csh.login
и
/etc/profile
оставить по дефолту, то есть ничего лишнего,
а пользовательский /home/user/.login.conf
привести к виду

me:My Account:\
        :charset=KOI8-R:\
        :lang=ru_RU.KOI8-R:

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Локалзация"  +/
Сообщение от heliser email(ok) on 19-Апр-12, 15:17 
>[оверквотинг удален]
>         :lang=ru_RU.KOI8-R:
> /etc/csh.login
> и
> /etc/profile
> оставить по дефолту, то есть ничего лишнего,
> а пользовательский //home/user/.login.conf
> привести к виду
> me:My Account:\
>         :charset=KOI8-R:\
>         :lang=ru_RU.KOI8-R:

Спасибо что отозвались!
Почитал здесь http://wiki.lissyara.su/wiki/Login.conf(5) про .login.conf и посмотрел в своей системе. У меня нет /home/user/.login.conf у меня есть /home/user/.login_conf , ну ладно делаю в нем указанное вами. Локали нет и  клава не печатает по русски.
Я засомневался в строке
me:My Account:\
Думаю может вместо My Account надо вписать имя юзера - нет, все равно не работает.
Почитал внимательней указанный выше источник. В общем-то строчки
>         :charset=KOI8-R:\
>         :lang=ru_RU.KOI8-R:

эквивалентны командам

export MM_CHARSET=KOI8-R
export LANG=ru_RU.KOI8-R

Делаю после reboot
echo $MM_CHARSET
echo $LANG
Переменные окружения без значений
Делаю команды  
export MM_CHARSET=KOI8-R
export LANG=ru_RU.KOI8-R
ручками и удивительное дело - локализация появляется, а клава по русски не печатает
проверяю значения переменных - какие надо
делаю su
а с правами su все работает и клава и локаль.
делаю exit из su
-опять только локаль, а клава не пашет по русски.
????

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Локалзация"  +/
Сообщение от михалыч (ok) on 19-Апр-12, 17:34 
> У меня нет /home/user/.login.conf у меня есть /home/user/.login_conf

Да, это мой косяк. Есть только .login_conf

> Я засомневался в строке
> me:My Account:\
> Думаю может вместо My Account надо вписать имя юзера

Это не принципиально,
можно оставить и так:

me:\
        :charset=KOI8-R:\
        :lang=ru_RU.KOI8-R:

В этом файле есть же и образец!

Если делать так, то русификация будет только под юзером.
то есть логигимся обычным юзером (не рутом!),
запускаеи mc - все по-русски,
выходим, жмём в консоле CapsLock, жмякаем клаву, проверяем - всё по-русски..
Даём комманду su - все работает аналогично - по-русски!

Если залогиниться в систему сразу же рутом, то русского не будет.

Можно и другой вариант использовать, по старинке.

Пользовательский .login_conf не трогаем, оставляем по дефолту.

Правим:

/etc/csh.login
setenv LANG ru_RU.KOI8-R
setenv MM_CHARSET KOI8-R

и

/etc/profile
LANG=ru_RU.KOI8-R; export LANG
MM_CHARSET=KOI8-R; export MM_CHARSET

Тоже сразу всё будет по-русски, и mc и консоль,
и у рута и обычных юзеров.

P.S.

> Делаю после reboot
> echo $MM_CHARSET
> echo $LANG

Только что проверил у мну работают оба варианта
# echo $MM_CHARSET
# KOI8-R
# echo $LANG
# ru_RU.KOI8-R

А вообще, это хрестоматийная информация и настройка.
Прочтите библию или как там его - рид ту фак мануал

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Локалзация"  +/
Сообщение от heliser (ok) on 20-Апр-12, 13:24 
> Это не принципиально,
> можно оставить и так:
> me:\
>         :charset=KOI8-R:\
>         :lang=ru_RU.KOI8-R:
> В этом файле есть же и образец!

делал и так - не работает

$ echo $MM_CHARSET
$
$ echo $LANG
$
Видимо - надо разбираться како-то демон у меня не запускается, который эти строчки читает. А возможности по настройке пользовательского окружения в этом механизме привлекают.
Однако второй вариант заработал с файлами /etc/csh.login и /etc/profile
Cпасибо!!! Правда проверил удаленно через putty - все работает. Локально пока нет возможности проверить - только завтра, но думаю будет работать, а вот через ssh из linux маппинг работает - клава переключает язык, а вот локализации правильной нет - вместо русских букв знаки вопроса в ромбах. Наверное эло связано с тем, что локаль у этого линукса UTF-8. То есть это вероятно проблема linux или мануал по ssh надо поковырять...

Вариант с файлом /etc/profile я пробовал, но только без настройки /etc/csh.login у меня в файле /etc/profile остались закомментированные мной строчки, но видимо я тогда ошибся, потому что одна из строчек была
##LANG=ru.KOI8-R значит вот где мой косяк был хотя знал, что надо писать ru_RU.KOI8-R

> А вообще, это хрестоматийная информация и настройка.
> Прочтите библию или как там его - рид ту фак мануал

Да я знаю про это, но вроде делаю по написанному, а не идет, да и вариантов по настройке много - сами же два предложили, а есть и другие. А когда начинаешь метаться от одного к другому - тут уже и варианты между собой конфликтовать начинают... Да и мануал этот довольно древненький - не все варианты современной оси учитывает. Я не конкретно про локализацию, хотя и про нее тоже.


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Локалзация"  +/
Сообщение от михалыч (ok) on 20-Апр-12, 14:04 
> А возможности по настройке пользовательского окружения в этом механизме привлекают.

Может этот вариант (использовать настройки в .login_conf) появился в более позднем релизе?
у меня 8.2, а у вас 8.1

> вот локализации правильной нет - вместо русских букв знаки вопроса в
> ромбах. Наверное эло связано с тем, что локаль у этого линукса
> UTF-8. То есть это вероятно проблема linux или мануал по ssh
> надо поковырять...

Может это поможет, советую посмотреть здесь ==>
https://www.opennet.ru/tips/1506_dcop_kde_konsole_terminal_xt...

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

10. "Локалзация"  +/
Сообщение от heliser (ok) on 22-Апр-12, 15:54 
>> А возможности по настройке пользовательского окружения в этом механизме привлекают.
> Может этот вариант (использовать настройки в .login_conf) появился в более позднем релизе?
> у меня 8.2, а у вас 8.1

Может быть, но конфиги-то есть... -Тот же .login_conf в домашнем коталоге.

>> вот локализации правильной нет - вместо русских букв знаки вопроса в
>> ромбах. Наверное эло связано с тем, что локаль у этого линукса
>> UTF-8. То есть это вероятно проблема linux или мануал по ssh
>> надо поковырять...
> Может это поможет, советую посмотреть здесь ==>
> https://www.opennet.ru/tips/1506_dcop_kde_konsole_terminal_xt...

Спасибо! Уже вомогло вот это: https://www.opennet.ru/tips/info/1557.shtml Особенно вариант:
--Решить проблему, можно создав ярлык запускающий gnome-terminal, как:
--sh -c "export LANG=ru_RU.KOI8-R; gnome-terminal --disable-factory"

В любом случае, вы мне очень помогли. Конечно, как сказал уважаемый гуру lavr:
>Лучше прочитать и понять, чем убить кучу времени на тырканье.

Но я занимаюсь администрированием freeBSD не каждый день - я преподаватель. И у меня куча других обязанностей, в том числе и в семье. Поэтому к сожалению не имею достаточного времени на подробное изучение документации. К сожалению все в жизни изучить просто не успеешь, поэтому и полагаешься на чужой опыт. Может и я кому-нибудь чем-нибудь помогу - в том числе и этим постом на форуме.


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

2. "Локалзация"  +/
Сообщение от lavr email on 19-Апр-12, 14:34 
>[оверквотинг удален]
> Далее создал юзера  и пркрутил к нему файл /home/личный_каталог/.inputrc следующего содержания
> -------------------------------------------------------------------------
> set meta-flag on
> set convert-meta off
> set output-meta on
> --------------------------------------------------------------------------
> Указанные настройки нарыл из разных источников, например из
> https://www.opennet.ru:8101/base/rus/freebsd_rus.txt.html
> Может и еще чего сделал - не все помню.
> Подскажите куда копать

http://www.freebsd.org/doc/ru/books/handbook/using-localizat...

локализацию можно разбить на несколько этапов:
- загрузка консольных фонтов и клавиатурного мапинга
- настройка SHELL'ов и среды, shell'ов бывает много и собирать их нужно с 8bit support
и соответствующим образом настраивать
- настройка отдельных утилит и программ для работы с 8'bit
- настройка Xorg

для csh/tsch в системных /etc/csh.[cshrc|login] можно выставить локализацию
и настройки среды, или в пользовательских .cshrc/.login

для sh/bash в системном /etc/profile и в домашних .profile/.bash_[profile|rc]
локализацию и среду, для bash дополнительно создать файл $HOME/.inputrc где указать
фильтры:

set convert-meta off
set input-meta on
set output-meta on

про драйвер клавиатуры и xkbd:
http://pascal.tsu.ru/

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Локалзация"  +/
Сообщение от heliser (ok) on 20-Апр-12, 14:03 
> для bash дополнительно создать файл $HOME/.inputrc где указать
> фильтры:
> set convert-meta off
> set input-meta on
> set output-meta on

Вроде подобно делал:
set meta-flag on
set convert-meta off
set output-meta on

Взято из другого источника - правда одна строчка не совпадает - знать бы что они делают - это видимо мануал на bash курить надо. На все надо время...

В любом случае - Спасибо...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Локалзация"  +/
Сообщение от lavr email on 20-Апр-12, 15:22 
>[оверквотинг удален]
>> set convert-meta off
>> set input-meta on
>> set output-meta on
> Вроде подобно делал:
> set meta-flag on
> set convert-meta off
> set output-meta on
> Взято из другого источника - правда одна строчка не совпадает - знать
> бы что они делают - это видимо мануал на bash курить
> надо. На все надо время...

а вы хотите чтобы произошло озарение свыше?!

input-meta и meta-flag одно и тоже

> В любом случае - Спасибо...

не на чем.

Лучше прочитать и понять, чем убить кучу времени на тырканье.

1) загрузка фонта (vidcontrol)
2) загрузка клавиатурного мапинга

верхнее есть минимум для локализации КОНСОЛИ, в системе для этого есть:

# ls /usr/share/syscons/
fonts - фонты
keymaps - клавиатурный мапинг
scrnmaps - screen мапинг

как видим ничего сложного нет, есть тонкости:
- если для locale ru_RU.KOI8-R мы грузим koi8-r фонты и koi8-r keymap то все однозначано
- если для локализации ru_RU.KOI8-R мы хотим использовать фонты cp866 (они качественней чем koi8r), то необходимо использовать скринмаппинг для соответствия

Чего нет в системе для верхнего? Нет scrnmap для фонтов cp1251 в koi8-r,
нет keymapинга ru.cp1251.kbd

Но все это при необходимости можно найти в RUNet'е

Итого для локализации консоли необходимы: фонт и keymap

Что происходит дальше?

Дальше мы производим вход в систему, интерактивную работу нам обеспечивает SHELL,
значит shell должен поддерживать 8bit in/out и быть настроен, как в случае с bash
- .inputrc

Чтобы задать требуемое locale, необходимо как минимум настроить переменную среды
LANG - man environ

для csh/tsch

# setenv LANG ru_RU.KOI8-R

для sh/bash

# export LANG=ru_RU.koi8-R

верхнее показывает ручную настройку параметров среды, для автоматической, есть два
варианта:

1) для каждого SHELL'а есть start-stop скрипты, системные и пользовательские,
например для csh/tsch

системные: /etc/csh.[cshrc|login]
пользовательские: $HOME/.login и $HOME/.cshrc ($HOME домашняя директория)

для sh/bash

системные: /etc/profile
пользовательские: $HOME/.profile для bash $HOME/.bash_profile и $HOME/.bashrc

настройки локализации можно задать в старт скриптах шела

2) можно использовать login классы - man login.conf и ряд необходимых настроек
задавать в настройках классов, пользователи заводятся с указанием необходимого
класса или после заведения правится класс принадлежности пользователя

И это снова не все для локализации консоли, необходимо поправить файл /etc/ttys
описание эмулируемого терминала в виртуальных консолях, до 9'ки для
консоли нужно было задавать:

# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25r on  secure

cons25r - тип эмулируемого терминала, в оригинале был cons25

# less /etc/termcap
поиск cons25 и cons25r и сравнение

termcap - база эмулируемых терминалов с установками.

В 9'ке лучше вместо cons25r использовать xterm, ну да он там by default

Чтобы изменения /etc/ttys вошли в силу, нужно выполнить:

# kill -HUP 1

getty на vt'аях будут перезапущены

ниже пример:

[alone]~ > echo $SHELL
/usr/local/bin/bash
[alone]~ > echo $TERM
xterm
[alone]~ > echo $TERMCAP
/usr/local/etc/termcap
[alone]~ > echo $LANG
ru_RU.KOI8-R
[alone]~ > locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=
[alone]~ >

некоторые полезные переменные:

[alone]~ > env | grep -i koi
MM_CHARSET=KOI8-R
LANG=ru_RU.KOI8-R
LESSCHARSET=koi8-r
CHARSET=KOI8-R
[alone]~ >

не забывайте про переменные TERM - вы можете менять тип эмуляции терминала,
TERMCAP - задает базу termcap, /etc/termcap -> /usr/share/misc/termcap

Все верхнее относится к локализации консоли, и никакой перезагрузки не требуется,
если все правильно и по полочкам прописано в нужных файлах, все будет работать
автоматом и после перезагрузки.

Если пользователи заводятся через adduser - можно настроить /etc/skel для всех,
поместив туда необходимые шаблоны старт-стоп файлов shell, пример в

[alone]~ > ls -la /usr/share/skel/
total 20
drwxr-xr-x   2 root  wheel  512 13 июл  2011 .
drwxr-xr-x  25 root  wheel  512  3 ноя  2010 ..
-rw-r--r--   1 root  wheel  759 13 июл  2011 dot.cshrc
-rw-r--r--   1 root  wheel  257 13 июл  2011 dot.login
-rw-r--r--   1 root  wheel  167 13 июл  2011 dot.login_conf
-rw-------   1 root  wheel  379 13 июл  2011 dot.mail_aliases
-rw-r--r--   1 root  wheel  339 13 июл  2011 dot.mailrc
-rw-r--r--   1 root  wheel  785 13 июл  2011 dot.profile
-rw-------   1 root  wheel  284 13 июл  2011 dot.rhosts
-rw-r--r--   1 root  wheel  980 13 июл  2011 dot.shrc

при заведении пользователей dot файлы будут копимроваться пользователям в $HOME,
например dot.login -> $HOME/.login и тд и тп

пример:

[alone]~ > ls -la zoneinfo
-rw-r--r--  1 lavr  users  696 28 мар  2011 zoneinfo
[alone]~ > locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=
[alone]~ > export LC_TIME="C"
[alone]~ > ls -la zoneinfo
-rw-r--r--  1 lavr  users  696 Mar 28  2011 zoneinfo
[alone]~ >

сравните даты в примере.
man locale, man setlocale

Надеюсь верхнее наведет некий порядок в дальнейшем понимании:
читайте man, handbook и основополагающие статьи, ссылка на сайт Ивана Паскаля

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Локалзация"  +/
Сообщение от михалыч (ok) on 20-Апр-12, 19:08 
Спасибо, очередной мастер-класс от lavr
Теперь и мне стало понятней.
Не перестаю восхищаться вашими познаниями.
Когда читаю ваши комментарии, начинаю осознавать,
что я знаю, что ничего не знаю.. ))
Учиться, учиться и ещё раз учиться.
Как завещал великий и ужасный. ))
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру