Bug 9364

Summary: Перенести файл /usr/share/man/ru/.charset в пакет man
Product: Sisyphus Reporter: Vitaly A. Ostanin <vyt>
Component: manAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: ldv, mike, rider, sass, slava, stanv, voins
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 10446    

Description Vitaly A. Ostanin 2006-04-04 13:37:07 MSD
В локали ru_RU.CP1251 /usr/share/man/ru/man1/gpg.1.bz2 нечитаем.
gnupg-1.4.2.2-alt1

Система - Master 2.4, обновлённый до Sisyphus 20051231
Comment 1 Dmitry V. Levin 2006-04-04 13:53:00 MSD
Есть ли файл /usr/share/man/ru/.charset и если есть, то что в нём?
Comment 2 Anton Farygin 2006-04-04 15:24:03 MSD
Аналогичная ситуация в ru_RU.UTF-8.
$ file /usr/share/man/ru/.charset
/usr/share/man/ru/.charset: ERROR: cannot open `/usr/share/man/ru/.charset' (No
such file or directory)
$ rpm -qa|grep man
man-pages-2.27-alt1
man-1.5m2-alt3
Comment 3 Dmitry V. Levin 2006-04-04 15:26:47 MSD
Тогда я не вижу хорошего решения.
Comment 4 Vitaly A. Ostanin 2006-04-04 18:48:24 MSD
Такого файла
/usr/share/man/ru/.charset
нет.

А откуда он должен был появиться?

man-pages-2.25-alt1
man-1.5m2-alt3
Comment 5 Dmitry V. Levin 2006-04-06 02:06:06 MSD
Я думаю, вы понимаете, что roff довольно старая штука и никаких charset'ов не
понимает.  Другими словами, из самого файла man'а информации о charset'е не
добудешь.  Наш man пропатчен на тему добывания charset'а из файла .charset, и
/usr/share/man/ru/.charset поставляет пакет man-pages-ru.  По случайному
совпадению charset, в котором написан /usr/share/man/ru/man1/gpg.1.bz2,
совпадает с тем, что использован для man-pages-ru, поэтому установка пакета
man-pages-ru решает данную конкретную проблему.
Comment 6 Anton Farygin 2006-04-06 10:03:12 MSD
я так и знал ;(

Беда в том, что много man'ов из man-pages-ru устарели. Соответственно читать их
удобнее на английском.

а можно сделать так, что если charset файла не найдено - то и показывать
английский man ?
Comment 7 Vitaly A. Ostanin 2006-04-06 15:10:41 MSD
> а можно сделать так, что если charset файла не найдено - то и показывать
> английский man ?
 
Присоединяюсь.
Comment 8 Dmitry V. Levin 2007-04-01 00:13:45 MSD
Наверное, можно сделать так, чтобы в отсутствии файла
/usr/share/man/LANG/.charset каталоги /usr/share/man/LANG/manX не сканировались
в поисках man-файла.
Comment 9 Dmitry V. Levin 2007-04-01 00:35:45 MSD
*** Bug 10847 has been marked as a duplicate of this bug. ***
Comment 10 Anton Farygin 2007-04-01 01:31:06 MSD
Видимо это оптимальное решение.
Comment 11 Slava Semushin 2008-01-18 09:03:21 MSK
Перевешиваю на пакет man. Займусь, как время будет.
Comment 12 Slava Semushin 2008-02-03 16:11:34 MSK
*** Bug 12169 has been marked as a duplicate of this bug. ***
Comment 13 Mikhail Gusarov 2008-02-03 16:13:44 MSK
Сорри за дурацкий вопрос: если все маны в UTF-8 перекодировать, то это проблему 
не решит ли случаем?
Comment 14 Slava Semushin 2008-02-03 16:17:22 MSK
(In reply to comment #13)
> Сорри за дурацкий вопрос: если все маны в UTF-8 перекодировать, то это проблему 
> не решит ли случаем?

Решит для пользователей с юникодной локалью, сломает для пользователей с koi8-r
и не исправит для тех у кого cp1251. Причем переконвертирование всех манов в
utf-8 потребует гораздо больше усилий.
Comment 15 Mikhail Gusarov 2008-02-03 16:18:46 MSK
(In reply to comment #14)

> Решит для пользователей с юникодной локалью, сломает для пользователей с koi8-
r и не исправит для тех у кого cp1251.

recode/iconv -f UTF-8 -t $LC_CTYPE
Comment 16 Slava Semushin 2008-02-03 16:21:18 MSK
(In reply to comment #15)
> (In reply to comment #14)
> 
> > Решит для пользователей с юникодной локалью, сломает для пользователей с koi8-
> r и не исправит для тех у кого cp1251.
> 
> recode/iconv -f UTF-8 -t $LC_CTYPE

recode/iconv -f KOI8-R -t $LC_CTYPE

Только в твоём случае ещё придётся все маны в юникод конвертировать.
Comment 17 Mikhail Gusarov 2008-02-03 16:22:48 MSK
(In reply to comment #16)
> recode/iconv -f KOI8-R -t $LC_CTYPE

Все пакеты содержат маны в кодировке KOI8-R? А о чём тогда вообще этот баг?

> Только в твоём случае ещё придётся все маны в юникод конвертировать.

Ты совсем ничего не понял. Нужна *одна* кодировка, чтобы не нужно было гадать 
на кофейной гуще. И из этой *одной* кодировки нужно перекодировать в кодировку 
локали.
Comment 18 Slava Semushin 2008-02-03 17:22:01 MSK
(In reply to comment #17)
> (In reply to comment #16)
> > recode/iconv -f KOI8-R -t $LC_CTYPE
> 
> Все пакеты содержат маны в кодировке KOI8-R? А о чём тогда вообще этот баг?

БОльшая часть русскоязычных манов находится в пакете man-pages-ru и в нём все
страницы в локали koi8-r (насколько мне известно).

> > Только в твоём случае ещё придётся все маны в юникод конвертировать.
> Ты совсем ничего не понял. Нужна *одна* кодировка, чтобы не нужно было гадать 
> на кофейной гуще. И из этой *одной* кодировки нужно перекодировать в кодировку 
> локали.

Т.е. сейчас кодировка мана может быть любой, при этом в .charset-файле она
должна быть указана, чтобы знать из какой кодировки перекодировать. Ты
предлагаешь вообще избавиться от .charset-файлов и всегда использовать UTF-8 как
кодировку мана по умолчанию? Я правильно понимаю? Вариант, в принципе, да.
Comment 19 Aleksandr Blokhin 2008-02-03 18:25:34 MSK
(In reply to comment #18)
> 
> Т.е. сейчас кодировка мана может быть любой, при этом в .charset-файле она
> должна быть указана, чтобы знать из какой кодировки перекодировать. Ты
> предлагаешь вообще избавиться от .charset-файлов и всегда использовать UTF-8 как
> кодировку мана по умолчанию? Я правильно понимаю? Вариант, в принципе, да.

И чем, в таком случае, это нам поможет? Сейчас koi8-r, будет utf-8.
Наобходимость в .charset пропадёт лишь в том случае, если одновременно во всех
дистрибутивах и работающих системах будет использоваться локаль utf-8.

Comment 20 Mikhail Gusarov 2008-02-03 18:26:50 MSK
(In reply to comment #19)

> И чем, в таком случае, это нам поможет?

См. выше про iconv в локаль пользователя.

> Наобходимость в .charset пропадёт лишь в том случае, если одновременно во всех
> дистрибутивах и работающих системах будет использоваться локаль utf-8.

Неа.
Comment 21 Sir Raorn 2008-02-03 19:03:07 MSK
Нигде в man'ах нет указания кодировки.  В пакетах man-pages-LL есть файл
/usr/share/man/LL/.charset, где указана кодировка ВСЕХ man'ов на этом языке и
кодировка эта ОДНА.

Так понятнее?
Comment 22 Sir Raorn 2008-02-03 19:04:24 MSK
iconv, кстати, и сейчас используется как это написано несколькими каментами выше.
Comment 23 Mikhail Gusarov 2008-02-03 19:13:32 MSK
(In reply to comment #21)
> Нигде в man'ах нет указания кодировки.  В пакетах man-pages-LL есть файл
> /usr/share/man/LL/.charset, где указана кодировка ВСЕХ man'ов на этом языке и
> кодировка эта ОДНА.

Как следствие, либо любой пакет с маном на языке LL должен иметь зависимость на 
man-pages-LL, либо нужно уметь определять кодировку без .charset.

Ни того, ни другого пока не наблюдается.
Comment 24 Sir Raorn 2008-02-03 19:22:04 MSK
Зависимость на man-pages-LL мне ну никак не нужна, тем более что man-pages-LL
есть только ru и uk.  Значит надо выносить LL/.charset в пакет man вместе со
всеми /usr/share/man/LL.

$ rpm -qf /usr/share/man/{de,pl,it}
warning: file /usr/share/man/de is not owned by any package
warning: file /usr/share/man/pl is not owned by any package
warning: file /usr/share/man/it is not owned by any package
Comment 25 Dmitry V. Levin 2008-02-04 01:52:56 MSK
(In reply to comment #24)
> Зависимость на man-pages-LL мне ну никак не нужна, тем более что man-pages-LL
> есть только ru и uk.  Значит надо выносить LL/.charset в пакет man вместе со
> всеми /usr/share/man/LL.
> 
> $ rpm -qf /usr/share/man/{de,pl,it}
> warning: file /usr/share/man/de is not owned by any package
> warning: file /usr/share/man/pl is not owned by any package
> warning: file /usr/share/man/it is not owned by any package

+1
Не забудьте расставить конфликты на man-pages-LL версии меньше чем требуемые,
и зависимости на требуемую версию пакета man.
Comment 26 Slava Semushin 2008-02-06 14:44:08 MSK
(In reply to comment #25)
> > $ rpm -qf /usr/share/man/{de,pl,it}
> > warning: file /usr/share/man/de is not owned by any package
> > warning: file /usr/share/man/pl is not owned by any package
> > warning: file /usr/share/man/it is not owned by any package

Вот тут неясно. Какие конкретно языки должны принадлежать? У тебя только три
этих есть? У меня вот больше:

[c0der@rock ~]$ ls -1d /usr/share/man/??
/usr/share/man/cs
/usr/share/man/de
/usr/share/man/es
/usr/share/man/fr
/usr/share/man/hu
/usr/share/man/it
/usr/share/man/lt
/usr/share/man/pl
/usr/share/man/pt
/usr/share/man/ru
/usr/share/man/sv
/usr/share/man/zh

Короче, по этому вопросу у меня пока ясности не наступило.

> Не забудьте расставить конфликты на man-pages-LL версии меньше чем требуемые,
> и зависимости на требуемую версию пакета man.

Тут надо с sass@ действовать вместе. Как понял нужно дейстовать так:

Я должен в пакете man:
 - поставить Conflicts: man-pages-ru < 0.98-alt11
 - добавить файл /usr/share/man/ru/.charset в пакет

sass@ должен в пакете man-pages-ru:
 - поставить Requires: man >= 1.6e-alt1
 - выкинуть файл /usr/share/man/ru/.charset из пакета

А потом мы должны почти одновременно влить пакеты на сборку. Я всё правильно
понял? Если да, то я бы уже начал реализовывать это.
Comment 27 Aleksandr Blokhin 2008-02-06 15:37:31 MSK
(In reply to comment #26)
> 
> sass@ должен в пакете man-pages-ru:
>  - поставить Requires: man >= 1.6e-alt1
>  - выкинуть файл /usr/share/man/ru/.charset из пакета
> 
> А потом мы должны почти одновременно влить пакеты на сборку. Я всё правильно
> понял? Если да, то я бы уже начал реализовывать это.

У меня готово. Могу заливать.
Comment 28 Sir Raorn 2008-02-06 17:22:55 MSK
И ещё man-pages-uk.

.charset класть только для тех языков, которые нам "интересны".  ru, uk, be... 
Понадобится что-то новое - добавим, тем более что пакетов man-pages-LL всего два.
Comment 29 Slava Semushin 2008-02-06 18:52:12 MSK
(In reply to comment #27)
[...]
> У меня готово. Могу заливать.

2sass@: каталог /usr/share/man/ru какому пакету будет принадлежать? Видимо,
логично было бы чтобы пакету man?

Пакет man-pages-uk я поправлю сам, так как у mike@ мало времени да и пакет висит
на nobody@. Также жду когда мне дадут право на заливку пакета man. При удачном
стечении звёзд завтра с моей стороны всё будет готово к отправке в Incoming.
Comment 30 Slava Semushin 2008-02-06 19:51:41 MSK
Исправления доступны здесь:

http://git.altlinux.org/people/php_coder/packages/man.git
http://git.altlinux.org/people/php_coder/packages/man-pages-uk.git

Если у кого-то есть претензии/предложения/пожелания, то прошу высказаться.
Comment 31 Aleksandr Blokhin 2008-02-06 19:53:47 MSK
(In reply to comment #29)
> (In reply to comment #27)
> [...]
> > У меня готово. Могу заливать.
> 
> 2sass@: каталог /usr/share/man/ru какому пакету будет принадлежать? Видимо,
> логично было бы чтобы пакету man?
Тогда он также должен содержать:
/usr/share/man/cs
/usr/share/man/de
/usr/share/man/es
/usr/share/man/fr
/usr/share/man/hu
/usr/share/man/it
/usr/share/man/lt
/usr/share/man/pl
/usr/share/man/pt
/usr/share/man/ru
/usr/share/man/sv
/usr/share/man/zh

А также для всех прочих языков. Логично? ;)
Comment 32 Slava Semushin 2008-02-06 19:59:02 MSK
(In reply to comment #31)
> Тогда он также должен содержать:
[...]
> А также для всех прочих языков. Логично? ;)

Логично, но у нас нет пакетов man-pages-{cs,de,es,fr,hu,it,lt,pl,pt,sv,zh} Когда
такие пакеты появятся, то добавим соответствующие каталоги.

И кстати. Все эти каталоги вообще не ясно откуда взялись. У raorn@'а их всего
три, у меня вот 12, а у mithraen@'а два...
Comment 33 Sir Raorn 2008-02-06 22:50:37 MSK
У меня их гораздо больше, а идут они из пакетов, которые носят с собой
неанглоязычные маны.
Comment 34 Slava Semushin 2008-02-07 09:49:54 MSK
(In reply to comment #33)
> У меня их гораздо больше, а идут они из пакетов, которые носят с собой
> неанглоязычные маны.

Предлагаю вопрос принадлежности каталогов вида /usr/share/man/$LANG обсудить в
другой баге, а эту уже исправить и забы^Wзакрыть. :)
Comment 35 Aleksandr Blokhin 2008-02-07 10:12:10 MSK
(In reply to comment #34)
> (In reply to comment #33)
> > У меня их гораздо больше, а идут они из пакетов, которые носят с собой
> > неанглоязычные маны.

Аналогично.

> 
> Предлагаю вопрос принадлежности каталогов вида /usr/share/man/$LANG обсудить в
> другой баге, а эту уже исправить и забы^Wзакрыть. :)
> 

К чему плодить баги? Я придерживаюсь мнения, что подкаталоги в %_mandir следует
оставить во владении локализованных манов. 
Резон: если оставить принадлежность каталогов так, как есть, то появление нового
локализованного пакета не потребует дополнительной работы - параллельной
пересборки пакета man.
Comment 36 Mikhail Gusarov 2008-02-07 10:15:28 MSK
(In reply to comment #35)
> К чему плодить баги?

К тому, чтобы в багах было 40 комментариев, а не 400. И чтобы статус "fixed" 
было понятно когда ставить, и было понятно как проверять, что баг пофикшен. И к 
тому, чтобы название бага соответствовало его содержанию.
Comment 37 Slava Semushin 2008-02-07 10:23:40 MSK
(In reply to comment #35)
[...]
> К чему плодить баги? Я придерживаюсь мнения, что подкаталоги в %_mandir следует
> оставить во владении локализованных манов. 
> Резон: если оставить принадлежность каталогов так, как есть, то появление нового
> локализованного пакета не потребует дополнительной работы - параллельной
> пересборки пакета man.

Пересборка пакета man потребуется в любом случае, ведь .charset-файл должен
будет предоставляться именно пакетом man, а не man-pages-foo.

В случае, если каталог /usr/share/man/$LANG будет принадлежать пакету man, то не
возникнет ситуации, когда установен только пакет man и каталог
/usr/share/man/$LANG никому не принадлежит.

Т.е. man может быть установлен в системе без пакета man-pages-foo, а обратное не
верно, так как man-pages-foo всегда требует установки пакета man.
Comment 38 Aleksandr Blokhin 2008-02-07 10:43:50 MSK
(In reply to comment #37)
> (In reply to comment #35)
> [...]
> 
> Пересборка пакета man потребуется в любом случае, ведь .charset-файл должен
> будет предоставляться именно пакетом man, а не man-pages-foo.

А для какиех языков он может ещё понадобиться? ru, ua, bg, by? Кто ещё пишет на
кириллице?
В общем, у меня пакет готов, так что я могу заливать. Махните кто-нибудь
платочком, когда можно.
Comment 39 Aleksandr Blokhin 2008-02-07 10:45:46 MSK
Кстати! %_cachedir/man/%LANG тогда тоже следует присоединить к man.
Comment 40 Aleksandr Blokhin 2008-02-07 10:47:39 MSK
(In reply to comment #39)
> Кстати! %_cachedir/man/%LANG тогда тоже следует присоединить к man.

И это - %_cachedir/man/%LANG/whatis - до кучи.
Comment 41 Slava Semushin 2008-02-07 12:59:04 MSK
(In reply to comment #38)
> В общем, у меня пакет готов, так что я могу заливать. Махните кто-нибудь
> платочком, когда можно.

Что ж. Вы меня убедили -- каталоги /usr/share/man/{ru,uk} не будут принадлежать
пакету man, только соответствующие .charset-файлы.

Пакет man-1.6e-alt1 отправился в Инкоминг и уже успешно прошел сборку.

2sass@: можете заливать man-pages-ru
Comment 42 Aleksandr Blokhin 2008-02-07 13:20:39 MSK
(In reply to comment #41)
> (In reply to comment #38)
> 
> Пакет man-1.6e-alt1 отправился в Инкоминг и уже успешно прошел сборку.
> 
> 2sass@: можете заливать man-pages-ru

Ушло.
Comment 43 Andrey Rahmatullin 2008-03-01 19:38:04 MSK
Поясните, кому теперь будут принадлежать /usr/share/man/cs и прочие.
Comment 44 Slava Semushin 2008-03-03 09:50:14 MSK
(In reply to comment #43)
> Поясните, кому теперь будут принадлежать /usr/share/man/cs и прочие.

Пока так же как и раньше -- никому. Надо обсудить этот вопрос и найти правильное
решение. Можно в devel@, можно отдельный баг открыть.