[Решено]Ничего не понимаю && enca [РЕШЕТО]
Антон Л. 12 января, 2009 - 23:20
Сегодня утром установил enca. Читал это руководство: http://ru.gentoo-wiki.com/wiki/Полная_поддержка_русского_языка , раздел про man. Всё заработало.
Недавно слетел вывод русских man страниц. Почти внезапно, насколько успел понять - из-за перезагрузки.
А теперь самое интересное. man ls, man gpasswd (русские маны) выводятся нормально только при выполнении sudo man ls, sudo man gpasswd. И такое явление наблюдается и под рутом о_О.
Помогите разобраться.
#grep NROFF /etc/man.conf NROFF /usr/bin/enconv -L ru -x KOI8-R | /usr/bin/nroff -mandoc -Tlatin1 -c | /usr/bin/enconv -L ru -x UTF8
#cat /etc/env.d/02locale MANPAGER="iconv -c -f KOI8-R -t UTF-8 | /usr/bin/less -isr"
»
- Для комментирования войдите или зарегистрируйтесь
Могу многозначительно сказать
Могу многозначительно сказать "Даааааа....". Эта система останется для меня загадкой на долгое время. Вообщем gentoo на то и хорош, что во всём надо разбираться хотя под час это не вовремя ;). Насколько я понял мистер NROFF форматирует страницу man и согласен получать только KOI8-R на входе.
Мы передаём ему KOI8-R :
/usr/bin/enconv -L ru -x KOI8-R | /usr/bin/nroff -Tlatin1 -c -mandoc
(файл /etc/man.conf)и затем его результат перекодируем в UTF-8
/usr/bin/enconv -L ru -x UTF-8
(файл /etc/man.conf)и отдаём на очередную перекодировку из koi8-r в utf-8 и вывод через less :
MANPAGER="iconv -c -f KOI8-R -t UTF-8 | /usr/bin/less -isr" (файл /etc/env.d/02locale)
<-- вот тут то и ошибка.Я решил это след. образом:
NROFF /usr/bin/enconv -L ru -x KOI8-R | /usr/bin/nroff -Tlatin1 -c -mandoc
(файл /etc/man.conf)(файл /etc/env.d/02locale)
MANPAGER="iconv -c -f koi8-r -t utf-8 | /usr/bin/less -isr"
--------------------------------------------------------------------------
Всё работает и под рутом и под пользователем. Однако, :) через sudo man ls - кракозябры, но я думаю такой необходимости не представиться. А может и есть секретные страницы, доступные только руту :)
:)Судьба мне одному
:)Судьба мне одному разбираться :) Или если я что-то пишу не понятно, вы уж мне сделайте замечание, но вроде стараюсь доступно изъясняться.
sudo MANPAGER="iconv -c -f koi8-r -t utf-8 | less -isr" man ls
Всё отображается в порядке. Я просто мало знаю про env, особенно при работе через sudo.
Ловите...
# echo 'MANPATH="/usr/share/man/ru"' > /etc/env.d/000rusman
# cat /etc/env.d/02locale
LC_ALL=""
LC_NUMERIC="C"
LANG="ru_RU.UTF-8"
PAGER="/usr/bin/less -isr"
# grep -E ^NROFF /etc/man.conf
NROFF /usr/bin/enconv -L ru -x KOI8-R | /usr/bin/nroff -mandoc -Tlatin1 -c | /usr/bin/enconv -L ru -x UTF8
и всё будет пучком ;)
(:
Так, есть же в MANPATH="/usr/share/man". Он разве не ищет рекурсивно в /usr/share/man/ru ? Вроде ищет.
Ради интереса попробал в идентичности так же и у себя. Не работает :). Не стал разбираться. Мне мой способ нравиться, может у нас где настройки различаются. Anyway, appreciate you. Спасибо за помощь.
И зря! ;)
Это решения сразу для нескольких проблем! =))
В точности одновременно всего перечисленного хватает. ;)
Только не забываем в конце сделать:
env-update && source /etc/profile
> Он разве не ищет рекурсивно... ?
env|grep MANPATH
:)
Отцитирую себя :), указать MANPATH="/usr/share/man/ru" нужно в том случае если вы хотите чтобы русские странице man отображались приоритетней.
P.S. Переменные PAGER и MANPATH присваиваются в 00basic :)
Цитировать себя не буду! :)
Вот сейчас вы всё верно написали. Только обратите внимание на `env` после обновления окружения (см. выше). Вот именно если сделать всё одновременно - будет работать не только всё, что нужно вам, но и будут решаться некотрые другие проблемы. PAGER? Ну не знаю, не помню. Может у вас это так. Но вот MANPATH есть в разных, потому и такой `env`. Отсюда и приоритет, действительно.
man-ru
Благодарю за инфу - оказалась не лишней.
А вот zsh - пофигу приоритеты манов, прописанные вверхе :)
Я просто запихал MANPATH="/usr/share/man/ru" в свой ~/.zshenv,
после "перелогина" всё пошло, как надо;
Интересно, есть ли у zsh команды, аналогичные env-update && source /etc/profile ?
А то приходится выходить-входить постоянно ;)
Кароче, спасиба...
Я zsh не юзаю пока...
1. env-update - это как-бы чиста гентушная фича! ;-)
2. может source ~/.zshenv вместо перелогина? ;-)
man-ru
Ошибся я однако...
пишу man less - в ответ - " ничего про less в руководстве не найдено",
хотя должно вывести маны на английском...
Придётся накуриваться манов по zsh :)
Опять же...
Команда man не имеет никакого отношения к zsh!
Равно как и переменная окружения MANPATH.
Возможно, в zsh окружение нужно правильно подготовить...
В MANPATH перечисляются пути, в порядке чего будут искаться маны.
man-ru
Нашёл всё-таки, как сделать, чтобы русские маны первыми выводилисть :)
На www.opennet.ru нашёл статью А.Федорчука, там конфиг его ~/.zshrc выложен.
Просто скопировал и чуть подредактировал строчку:
manpath="/usr/man:/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/qt/doc" на
manpath="/usr/share/man/ru:/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/qt/doc"
и дописал export MANPATH в свой ~/.zshrc;
Вроде пошло О_о.
А я до этого писал MANPATH="/usr/man:/usr/share/man:/usr/local/man:/usr/X11R6/man"
Ашыпка, однако, вышла ;)