[root@c253 ~]# /usr/bin/manpath /usr/share/man/ru:/usr/share/man:/usr/local/share/man:/usr/local/man [root@c253 ~]# LC_ALL=C /usr/bin/manpath /usr/share/man/ru:/usr/share/man:/usr/local/share/man:/usr/local/man /usr/share/man/ru на первом месте. После этого при установленном man-pages-ru всегда показывается русская версия. Безотносительно от локали, указанной в LC_ALL. Если же поменять местами: export MANPATH=/usr/share/man:/usr/share/man/ru:/usr/local/share/man:/usr/local/man То man начинает работать как положено: в русской локали показывать русскую страницу, в LC_ALL=C man apt-cache - англоязычную. Более того! man прекрасно переключает локализованные страницы сам, без добавления /usr/share/man/ru в MANPATH. Вывод: /usr/bin/manpath не должен возвращать список с /usr/share/man/ru
Что-то никакого движения ...
А у меня, вроде бы, правильно работает (p8). $ /usr/bin/manpath /usr/share/man:/usr/local/share/man:/usr/local/man $ rpm -qf /usr/bin/manpath man-1.6g-alt3 $ rpm -qa|grep man-pages man-pages-ru-4.08-alt3 man-pages-4.10-alt2 man-pages-ru-extra-0.1-alt5 Но, в любом случае, в Сизифе man поменялся на man-db, теперь надо проверять с ним. И, опять же, у меня и с man-db работает: $ locale LANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME=C LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES=C LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL= $ rpm -qa|grep man-pages man-pages-4.10-alt2 man-pages-ru-4.08-alt3 man-pages-ru-extra-0.1-alt5 man iconv открывает английский man, LC_MESSAGES=ru_RU.UTF-8 man iconv - русский.
На man-db-2.7.6.1 то же самое: в локали C, POSIX, en_US показывается русский man.
(In reply to comment #3) and (In reply to comment #0) > На man-db-2.7.6.1 то же самое: в локали C, POSIX, en_US показывается русский > man. > Вывод: /usr/bin/manpath не должен возвращать список с /usr/share/man/ru Ну так надо понять, откуда вылез /usr/share/man/ru. У меня-то этого ни с man, ни с man-db нет. Для man (в p8 правда) вывод приведён в Comment #2, для man-db вот: $ LC_MESSAGES=ru_RU.UTF-8 /usr/bin/manpath /usr/bin/manpath: предупреждение: найдена переменная среды $MANPATH, игнорируется /etc/man_db.conf /usr/local/share/man:/usr/share/man:/usr/local/man У и если переоткрывать, то с перевешиванием на man-db надо было.
$ /usr/share/man/ru:/usr/share/man:/usr/local/share/man:/usr/local/man bash: /usr/share/man/ru:/usr/share/man:/usr/local/share/man:/usr/local/man: Нет такого файла или каталога $ LC_ALL=C /usr/bin/manpath /usr/bin/manpath: warning: $MANPATH set, ignoring /etc/man_db.conf /usr/local/share/man:/usr/share/man/ru:/usr/share/man:/usr/local/man $ /usr/bin/manpath /usr/bin/manpath: предупреждение: найдена переменная среды $MANPATH, игнорируется /etc/man_db.conf /usr/local/share/man:/usr/share/man/ru:/usr/share/man:/usr/local/man $ echo $MANPATH /usr/local/share/man:/usr/share/man/ru:/usr/share/man:/usr/local/man rpm -qf /etc/bash_completion.d/man-sh man-sh
В смысле, если стоит, попробовать удалить man-sh
Исходя из Comment #3 перевешиваю на man-db, но проблему локализовать может только тот, у кого это проявляется. Я вот у себя воспроизвести не могу, так что, вероятно, это проблема какого-то другого пакета, который /usr/share/man/ru.
(In reply to comment #7) > который /usr/share/man/ru. слово "добавляет" не дописал.
(В ответ на комментарий №7) > Исходя из Comment #3 перевешиваю на man-db, но проблему локализовать может > только тот, у кого это проявляется. Я вот у себя воспроизвести не могу, так > что, вероятно, это проблема какого-то другого пакета, который > /usr/share/man/ru. man-pages-ru такое имеет. Но проблему это не решает. MANPATH работает криво.
manpath(1): Если установлена переменная окружения $MANPATH, то manpath просто покажет её значение и выдаст предупреждение. Если установлена переменная окружения $MANPATH, то её значение используется в качестве пути поиска справочных страниц. Если её нет, то man покажет страницу согласно локали т.е. дополнительно указывать /usr/share/man/ru нигде не нужно.
(В ответ на комментарий №10) > manpath(1): > Если установлена переменная окружения $MANPATH, то manpath просто покажет её > значение и выдаст предупреждение. > > Если установлена переменная окружения $MANPATH, то её значение используется в > качестве пути поиска справочных страниц. Если её нет, то man покажет страницу > согласно локали т.е. дополнительно указывать /usr/share/man/ru нигде не нужно. Показывает всегда только русскую. Даже в английской и POSIX-локали.
(В ответ на комментарий №11) > (В ответ на комментарий №10) > > manpath(1): > > Если установлена переменная окружения $MANPATH, то manpath просто покажет её > > значение и выдаст предупреждение. > > > > Если установлена переменная окружения $MANPATH, то её значение используется в > > качестве пути поиска справочных страниц. Если её нет, то man покажет страницу > > согласно локали т.е. дополнительно указывать /usr/share/man/ru нигде не нужно. > Показывает всегда только русскую. Даже в английской и POSIX-локали. $ printf '{%s}\n' "$MANPATH" {} $ manpath /usr/share/man:/usr/local/man:/usr/local/share/man $ LANG=C man -w manpath /usr/share/man/man1/manpath.1.xz $ LANG=ru_RU.UTF-8 man -w manpath /usr/share/man/ru/man1/manpath.1.xz $ LANG=de_DE.UTF-8 man -w manpath /usr/share/man/de/man1/manpath.1.xz У меня всё работает согласно документации. Файл /etc/man_db.conf не модифицирован.
(In reply to comment #7) > так что, вероятно, это проблема какого-то другого пакета, который > /usr/share/man/ru добавляет. Кстати, косвенно это подтверждается тем, что поведение manpath и из старого man, и из нового man-db одинаково. Если только man и man-db какой-то общий код не используют. Но, вроде бы, оба пакета старые и, кажется, развивались сами по себе.
(В ответ на комментарий №12) > (В ответ на комментарий №11) > > (В ответ на комментарий №10) > > > manpath(1): > > > Если установлена переменная окружения $MANPATH, то manpath просто покажет её > > > значение и выдаст предупреждение. > > > > > > Если установлена переменная окружения $MANPATH, то её значение используется в > > > качестве пути поиска справочных страниц. Если её нет, то man покажет страницу > > > согласно локали т.е. дополнительно указывать /usr/share/man/ru нигде не нужно. > > Показывает всегда только русскую. Даже в английской и POSIX-локали. > > $ printf '{%s}\n' "$MANPATH" > {} > > $ manpath > /usr/share/man:/usr/local/man:/usr/local/share/man > > $ LANG=C man -w manpath > /usr/share/man/man1/manpath.1.xz > > $ LANG=ru_RU.UTF-8 man -w manpath > /usr/share/man/ru/man1/manpath.1.xz > > $ LANG=de_DE.UTF-8 man -w manpath > /usr/share/man/de/man1/manpath.1.xz > > У меня всё работает согласно документации. Файл /etc/man_db.conf не > модифицирован. Вот. А у меня: cas@cas git $ printf '{%s}\n' "$MANPATH" {/usr/local/share/man:/usr/share/man/ru:/usr/share/man:/usr/local/man} и /etc/profile.d/mpi-selector-manpath.sh тоже самодеятельность проявляет. Осталось найти того, кто MANPATH переиначивает.
(В ответ на комментарий №14) > Вот. А у меня: > > cas@cas git $ printf '{%s}\n' "$MANPATH" > {/usr/local/share/man:/usr/share/man/ru:/usr/share/man:/usr/local/man} > > и /etc/profile.d/mpi-selector-manpath.sh тоже самодеятельность проявляет. > Осталось найти того, кто MANPATH переиначивает. А! вот оно что! У меня всё работает как раз из-за того что: $ rpm -V mpi-selector S.5....T. /etc/profile.d/mpi-selector-manpath.sh $ egrep -c -v -e '^#' -e '^$' /etc/profile.d/mpi-selector-manpath.sh 0 Если выкинуть этот скрипт, то всё должно начать работать. По крайней мере мне этого хватило.
(В ответ на комментарий №15) > Если выкинуть этот скрипт, то всё должно начать работать. По крайней мере мне > этого хватило. Да, это и было причиной. Закрываю баг.