В тексте man-страницы одинарная кавычка (') показывается как <B4>. Пример: man udev All empty lines or lines beginning with <B4>#<B4> will be ignored.
У меня показывает нормально (man-1.6f-alt1, ru_RU.UTF-8): All empty lines or lines beginning with '#' will be ignored. Какая версия пакета man? Какая локаль?
man-1.6f-alt1 udev-126-alt3 ru_RU.UTF-8, хотя локаль не важна
Возможно, виноват less как $PAGES? У меня less-424-alt2
Зато у меня man scanf показывает <B7> вместо какого-то символа, типа точки.
less тот же, в нем отображается все правильно "All empty lines, or lines beginning with ´#´ will be ignored."
Попробуйте исправить в /etc/man.conf строчку NROFF /usr/bin/nroff -Tlatin1 -mandoc на NROFF /usr/bin/nroff -Tutf8 -mandoc Мне это помогло увидеть точку в man scanf. Возможно, поможет вам с <B4>
ru_RU.KOI8-R, последний сизиф, aterm (есл и имеет значение). Кавычки в man udev как в comment 5, точки в man scanf (после "A directive is one of the following:"?) показываются точками.
man.conf не трогал.
(In reply to comment #7) > ru_RU.KOI8-R, последний сизиф, aterm (есл и имеет значение). Кавычки в man udev как в comment > 5, точки в man scanf (после "A directive is one of the following:"?) показываются точками. Т.е. у тебя работает вообще всё? (кстати, я смотрел man в xterm, опять же если это имеет значение).
с -Tutf8 отображает правильно (In reply to comment #7) > ru_RU.KOI8-R koi8-r и т.п. давно никого не интересует
(In reply to comment #10) > с -Tutf8 отображает правильно Это хорошо. Значит дело в ключах nroff > (In reply to comment #7) > > ru_RU.KOI8-R > > koi8-r и т.п. давно никого не интересует Валерий, не надо говорить за всех, пожалуйста :) У меня дома CP1251 и я очень не хотел бы что-то ломать.
(In reply to comment #6) > Мне это помогло увидеть точку в man scanf. Возможно, поможет вам с <B4> Спасибо. У меня появились символы копирайта ( например в printf(1) ).
(In reply to comment #11) > Это хорошо. Значит дело в ключах nroff Я сейчас потихоньку пилю новую версию.
(In reply to comment #9) > Т.е. у тебя работает вообще всё? И даже символ копирайта. (In reply to comment #10) > koi8-r и т.п. давно никого не интересует Отучаемся говорить за всех... (In reply to comment #11) > > с -Tutf8 отображает правильно > Это хорошо. Значит дело в ключах nroff А оно умеет само, без пинков на кодировку локали смотреть?
(In reply to comment #12) > (In reply to comment #6) > > Мне это помогло увидеть точку в man scanf. Возможно, поможет вам с <B4> > Спасибо. У меня появились символы копирайта ( например в printf(1) ). У меня русские маны перестали показываться после этого ;( (например, тот же printf(1))
"The nroff script emulates the nroff command using groff. Only ascii, latin1, utf8, and cp1047 are valid arguments for the -T option" так что без iconv не обойтись. Но пинок "nroff -Tutf8 | iconv -t моякодировка" в пакет, вероятно, уместен.
(In reply to comment #15) > У меня русские маны перестали показываться после этого ;( (например, тот же > printf(1)) Попробуй добиться следующего: 1) маны, в какой бы кодировке они ни были, перекодируются в UTF-8 перед запихиванием в nroff 2) nroff работает в UTF-8 3) результат конвертируется в кодировку локали. Посмотри ещё обсуждения в багтракере редхата и debian - там были какие-то подводные грабли.
да, русские маны сломались
(In reply to comment #17) > 1) маны, в какой бы кодировке они ни были, перекодируются в UTF-8 перед > запихиванием в nroff Это старая проблема. В мане нет указания кодировки.
(In reply to comment #19) > > 1) маны, в какой бы кодировке они ни были, перекодируются в UTF-8 перед > > запихиванием в nroff > Это старая проблема. В мане нет указания кодировки. Вроде ведь порешали спецфайликом с укзанием кодировки для данного языка? Я понимаю, что в разных пакетах могут лежать маны в разной кодировке. Но что ещё делать? Разве что к локализованному ману опционально файл с его кодировкой укладывать. Без знания кодировки всё равно эти маны только в одной локали работают.
(In reply to comment #20) > (In reply to comment #19) > > > > 1) маны, в какой бы кодировке они ни были, перекодируются в UTF-8 перед > > > запихиванием в nroff > > Это старая проблема. В мане нет указания кодировки. > Вроде ведь порешали спецфайликом с укзанием кодировки для данного языка? > > Я понимаю, что в разных пакетах могут лежать маны в разной кодировке. Но что > ещё делать? Разве что к локализованному ману опционально файл с его > кодировкой укладывать. Да. Есть файлик: /usr/share/man/ru/.charset Лучше бы в начале мана был комментарий с указанием кодировки. Тогда маны можно было делать в разных кодировках. Всё это ооочень старые проблемы :(
(In reply to comment #17) > 1) маны, в какой бы кодировке они ни были, перекодируются в UTF-8 перед > запихиванием в nroff > 2) nroff работает в UTF-8 > 3) результат конвертируется в кодировку локали. Пункт 2) не выполняется: "Так как groff не переваривает utf на входе, то хранить manы в utf невозможно" и "groff внутри сломан от рождения" -- это всё цитаты voins@ из bug #6988 С тех пор так ничего и не изменилось.
Тогда заставить его всё выплёвывать в UTF-8 и конвертировать в текущую кодировку.
(In reply to comment #22) > С тех пор так ничего и не изменилось. Как дособеру новую версию, так смогу подтвердить ещё раз эти слова. Сейчас это действительно так.
(In reply to comment #21)\ > Лучше бы в начале мана был комментарий с указанием кодировки. Проще все man-pages-* переконвертировать в UTF-8 и использовать эту кодировку по умолчанию.
(In reply to comment #25) > Проще все man-pages-* переконвертировать в UTF-8 и использовать эту кодировку по умолчанию. Читай комментарии 22 и 24
(In reply to comment #26) > Читай комментарии 22 и 24 Починить нереально?
(In reply to comment #27) > Починить нереально? Вообще, раньше это было трудно починить. Как сейчас пока не знаю.
beginning with a '#' · A sequence of white-space Copyright © 2008 Free Software Foundation man-1.6f-alt1 ru_RU.CP1251
(In reply to comment #28) > Вообще, раньше это было трудно починить. Как сейчас пока не знаю. Теперь знаю. Продвижения есть, но нужна поддержка со стороны man: groff научился искать признаки указания кодировке в man странице и есть ключ чтобы указать кодировку жёстко.
(In reply to comment #30) > Теперь знаю. Продвижения есть, но нужна поддержка со стороны man: groff научился > искать признаки указания кодировке в man странице и есть ключ чтобы указать > кодировку жёстко. Поддержку обеспечу, ты лучше выложи новый groff в Сизиф или на people, чтобы можно было потетстировать.
(In reply to comment #31) > Поддержку обеспечу, ты лучше выложи новый groff в Сизиф или на people, чтобы > можно было потетстировать. Разумеется: http://git.altlinux.org/people/legion/packages/groff.git?p=groff.git;a=shortlog;h=refs/heads/1.19.3 обрати внимание на утилиту preconv и groff (-k|-Karg).
(In reply to comment #32) http://git.altlinux.org/people/legion/packages/groff.git?p=groff.git;a=shortlog;h=refs/heads/1.19.3 Ок. Если где-нибудь положишь ещё и RPM-ки, то будет совсем замечательно (я бы тогда уже начал тестировать).
(In reply to comment #33) > (In reply to comment #32) > http://git.altlinux.org/people/legion/packages/groff.git?p=groff.git;a=shortlog;h=refs/heads/1.19.3 в man preconf похоже не подставилось что-то: preconv reads files and converts its encoding(s) to a form GNU troff(@MAN1EXT) can process Это trivial баг тебе :)
(In reply to comment #32) > обрати внимание на утилиту preconv и groff (-k|-Karg). Пока сработал такой рецепт: - поставить твой groff - переместить (или удалить) файл /usr/share/man/ru/.charset (для того, чтобы man не пытался перекодировать из koi8-r насильно, в дальнейшем это можно будет сделать просто отключив два патча) - заменить в /etc/man.conf NROFF /usr/bin/nroff -Tlatin1 -mandoc на NROFF /usr/bin/nroff -Kkoi8-r -Tutf8 -mandoc Надо проверить ещё, но сейчас у меня работает на юникодной локали, вероятно, не будет работать на однобитных локалях. Я почитал про preconv и вижу, что есть даже возможность избавиться от нашего строгого ограничения, чтобы все маны были в кодировке koi8-r: нужно изменить порядок по которому troff ищет кодировку. Сейчас ищет так: - если указана ключом -e - смотрит последовательность байт (BOM) - ищет магический комментарий - использует текущую локаль или же latin1, если локаль установлена в С или POSIX Так вот. Я предалагаю изменить порядок на следующий: - ищет магический комментарий - если указана ключом -e - смотрит последовательность байт (BOM) - использует текущую локаль или же latin1, если локаль установлена в С или POSIX В таком случае именно значащий комментарий будет "хвататься" первым, а не опция -e. Тогда любой мэйнтейнер сможет указать кодировку мана и она обработается правильно. А вот если кодировка не указана (как в большинстве манов сейчас), то будет использоваться та, что передаётся в ключе -e и тут уже мы укажем KOI8-R, которая сейчас во всех манах. Как вам идея?
(In reply to comment #35) > NROFF /usr/bin/nroff -Kkoi8-r -Tutf8 -mandoc > > Надо проверить ещё, но сейчас у меня работает на юникодной локали, вероятно, > не будет работать на однобитных локалях. Здесь добавишь перекодировку из UTF-8 в текущую локаль и всё заработает. Правда, лучше не iconv'ом, а тем, что умеет © на (c) заменять и т.д. > то будет использоваться та, что передаётся в ключе -e и тут уже > мы укажем KOI8-R, которая сейчас во всех манах. Лучше передавать сюда как раз /usr/share/man/<lang>/.charset - manpages-RU мир не исчерпывается. > Как вам идея? В остальном - нормально.
(In reply to comment #36) [...] > Здесь добавишь перекодировку из UTF-8 в текущую локаль и всё заработает. > Правда, лучше не iconv'ом, а тем, что умеет © на (c) заменять и т.д. А кто это умеет? > > то будет использоваться та, что передаётся в ключе -e и тут уже > > мы укажем KOI8-R, которая сейчас во всех манах. > > Лучше передавать сюда как раз /usr/share/man/<lang>/.charset - manpages-RU мир не исчерпывается. Не знаю пока как это сделать, потому что это значение в конфиге прописывается.
(In reply to comment #37) > А кто это умеет? Например, recode. [mag@frontier:~]% echo © | recode UTF-8/..ASCII/ (c) [mag@frontier:~]% > Не знаю пока как это сделать, потому что это значение в конфиге > прописывается. Там shell-команда. Что хочешь, то и пиши. Типа такого: NROFF /usr/bin/nroff -Tutf8 -e`cat /usr/share/man/$LANG/.charset` -mandoc Или shell-враппер вокруг nroff и его в NROFF указать. Вообще, я бы добавил отдельный ключик - "fallback encoding". Тогда -e можно оставить первым в поиске (и не указывать в конфигурации), а содержимое .charset подсовывать в качестве "fallback".
(In reply to comment #35) > (In reply to comment #32) > > обрати внимание на утилиту preconv и groff (-k|-Karg). > > Пока сработал такой рецепт: Когда я тестировал, то в итоге man генерировал мне: cd "/usr/share/man/ru" && (echo ".ll 8.1i"; echo ".nr LL 8.1i"; echo ".pl 1100i"; /bin/bzcat '/usr/share/man/ru/man1/ls.1.bz2'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/iconv -c -f KOI8-R -t utf8 | /usr/bin/nroff -Kutf8 -Tutf8 -mandoc | /usr/bin/iconv -c -f utf8 | /usr/bin/less -isR KOI8-R берётся из .charset > Так вот. Я предалагаю изменить порядок на следующий: Мне не нравится идея менять порядок т.к. если комментарий будет неправильный заинфорсить ты его не сможешь. Но ничего лучше пока в голову не приходит. Нужно подумать.
Я добавил в preconv/groff/nroff опцию -D для того чтобы менять возможность менять кодировку по умолчанию в preconv.
ping
(In reply to comment #41) > ping Когда ждать новый groff в Сизифе?
(In reply to comment #42) > Когда ждать новый groff в Сизифе? Когда в нём будут всё, что нужно для нормальной работы man. Если в нём достаточно средств, то я сделаю релиз сегодня.
(In reply to comment #43) > Когда в нём будут всё, что нужно для нормальной работы man. Если в нём > достаточно средств, то я сделаю релиз сегодня. Release early, release often (c) :-) (Собственно, для нормального тестирования мне нужны готовые RPM-ки, потому что тянуть из git-а и собирать самому накладно как по трафику, так и по времени.)
(In reply to comment #44) > (Собственно, для нормального тестирования мне нужны готовые RPM-ки, потому > что тянуть из git-а и собирать самому накладно как по трафику, так и по > времени.) Ты же уже собирал groff из git. Если ты не удалял репозиторий, то его обповление будет *сильно* меньше rpm'ок.
(In reply to comment #44) > (Собственно, для нормального тестирования мне нужны готовые RPM-ки, потому > что тянуть из git-а и собирать самому накладно как по трафику, так и по > времени.) Если тебе нужны rpm, то они тут: ftp.altlinux.org/people/legion/repo/
В сизиф ушла сборка: groff-1.19.3-alt1.20080822
(In reply to comment #47) > В сизиф ушла сборка: groff-1.19.3-alt1.20080822 В Сизифе пока её нет, а на people/ старая версия (пока поставил её).
Сборка с фиксом готова: http://lists.altlinux.org/pipermail/sisyphus/2008-August/217346.html
Reassign to new maintainer.
(In reply to comment #49) > Сборка с фиксом готова: http://lists.altlinux.org/pipermail/sisyphus/2008-August/217346.html > А нет смысла в новый прекрасный man сделать зависимость на именно новую прекрасную версию groff-base? А то я заметил, что у меня фигня вместо каких-то особых знаков (да и в разных терминалах -- разная), обновил man -- и нет хорошего эффекта; это при: man-1.6f-alt1 groff-base-1.19.2-alt2.0 (Прочитал это, попробую теперь с новым groff.)
(In reply to comment #51) > А то я заметил, что у меня фигня вместо каких-то > особых знаков (да и в разных терминалах -- разная) > (Прочитал это, попробую теперь с новым groff.) Нет, не исправилось; при man-1.6f-alt1 groff-base-1.19.3-alt2.20080822 git-doc-1.5.6.5-alt2 в xterm-236-alt1: $ man gitglossary | fgrep 'means to get' Fetching a branch means to get the branch╢s head ref from a remote Pushing a branch means to get the branch╢s head ref from a remote $ locale LANG=ru_RU.KOI8-R LC_CTYPE="ru_RU.KOI8-R" LC_NUMERIC="ru_RU.KOI8-R" LC_TIME="ru_RU.KOI8-R" LC_COLLATE="ru_RU.KOI8-R" LC_MONETARY="ru_RU.KOI8-R" LC_MESSAGES=POSIX LC_PAPER="ru_RU.KOI8-R" LC_NAME="ru_RU.KOI8-R" LC_ADDRESS="ru_RU.KOI8-R" LC_TELEPHONE="ru_RU.KOI8-R" LC_MEASUREMENT="ru_RU.KOI8-R" LC_IDENTIFICATION="ru_RU.KOI8-R" LC_ALL= $ (только вот эти ╢ (вместо апострофов) реально в xterm выглядит как вообще пустое место (нулевой ширины). В rxvt-unicode-9.02-alt1 выглядит именно так, как оно сюда скопировалсь (видно эти символы псевдографики. Ну т.е. отличия разных терминалов, про которое я говорил, оказалось чисто видимостью.)
(In reply to comment #52) > $ man gitglossary | fgrep 'means to get' > Fetching a branch means to get the branch╢s head ref from a remote > Pushing a branch means to get the branch╢s head ref from a remote В данном случае это ошибка в man-странице. В gitglossary(7) написано: Fetching a branch means to get the branch\'s head ref from a remote repository Цитирую groff(7): \' The acute accent .; same as \(aa. Unescaped: apostrophe
(In reply to comment #53) > (In reply to comment #52) > > $ man gitglossary | fgrep 'means to get' > > Fetching a branch means to get the branch╢s head ref from a remote > > Pushing a branch means to get the branch╢s head ref from a remote > > В данном случае это ошибка в man-странице. В gitglossary(7) написано: Ясно. Спасибо за ответ! https://bugzilla.altlinux.org/show_bug.cgi?id=17701 -- a note for me; I should check this after I'll upgrade from Sisyphus.
[alexei@threebears ~]$ rpm -qf /usr/bin/man-source man-1.6f-alt11 При вызове man-source --help последние строки выглядят так: General help using GNU software: <http://www.gnu.org/gethelp/> Report cat translation bugs to <http://translationproject.org/team/> ." .pl \n(nlu+10 Вот этот мусор в конце должен быть там?
(В ответ на комментарий №55) > При вызове man-source --help последние строки выглядят так: man-source - это хелпер. У него нет опций. Зачем он вам понадобился? > Вот этот мусор в конце должен быть там? Это не мусор.
Изначальная проблема исправлена.