Bug 9364 - Перенести файл /usr/share/man/ru/.charset в пакет man
: Перенести файл /usr/share/man/ru/.charset в пакет man
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/man)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
: 10446
  Show dependency tree
 
Reported: 2006-04-04 13:37 by
Modified: 2008-03-14 13:31 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


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

Система - Master 2.4, обновлённый до Sisyphus 20051231
------- Comment #1 From 2006-04-04 13:53:00 -------
Есть ли файл /usr/share/man/ru/.charset и если есть, то что в нём?
------- Comment #2 From 2006-04-04 15:24:03 -------
Аналогичная ситуация в 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 From 2006-04-04 15:26:47 -------
Тогда я не вижу хорошего решения.
------- Comment #4 From 2006-04-04 18:48:24 -------
Такого файла
/usr/share/man/ru/.charset
нет.

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

man-pages-2.25-alt1
man-1.5m2-alt3
------- Comment #5 From 2006-04-06 02:06:06 -------
Я думаю, вы понимаете, что 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 From 2006-04-06 10:03:12 -------
я так и знал ;(

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

а можно сделать так, что если charset файла не найдено - то и показывать
английский man ?
------- Comment #7 From 2006-04-06 15:10:41 -------
> а можно сделать так, что если charset файла не найдено - то и показывать
> английский man ?

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

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

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

recode/iconv -f UTF-8 -t $LC_CTYPE
------- Comment #16 From 2008-02-03 16:21:18 -------
(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 From 2008-02-03 16:22:48 -------
(In reply to comment #16)
> recode/iconv -f KOI8-R -t $LC_CTYPE

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

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

Ты совсем ничего не понял. Нужна *одна* кодировка, чтобы не нужно было гадать 
на кофейной гуще. И из этой *одной* кодировки нужно перекодировать в кодировку 
локали.
------- Comment #18 From 2008-02-03 17:22:01 -------
(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 From 2008-02-03 18:25:34 -------
(In reply to comment #18)
> 
> Т.е. сейчас кодировка мана может быть любой, при этом в .charset-файле она
> должна быть указана, чтобы знать из какой кодировки перекодировать. Ты
> предлагаешь вообще избавиться от .charset-файлов и всегда использовать UTF-8 как
> кодировку мана по умолчанию? Я правильно понимаю? Вариант, в принципе, да.

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

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

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

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

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

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

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

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

Ни того, ни другого пока не наблюдается.
------- Comment #24 From 2008-02-03 19:22:04 -------
Зависимость на 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 From 2008-02-04 01:52:56 -------
(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 From 2008-02-06 14:44:08 -------
(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 From 2008-02-06 15:37:31 -------
(In reply to comment #26)
> 
> sass@ должен в пакете man-pages-ru:
>  - поставить Requires: man >= 1.6e-alt1
>  - выкинуть файл /usr/share/man/ru/.charset из пакета
> 
> А потом мы должны почти одновременно влить пакеты на сборку. Я всё правильно
> понял? Если да, то я бы уже начал реализовывать это.

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

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

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

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

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

Если у кого-то есть претензии/предложения/пожелания, то прошу высказаться.
------- Comment #31 From 2008-02-06 19:53:47 -------
(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 From 2008-02-06 19:59:02 -------
(In reply to comment #31)
> Тогда он также должен содержать:
[...]
> А также для всех прочих языков. Логично? ;)

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

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

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

Аналогично.

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

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

К тому, чтобы в багах было 40 комментариев, а не 400. И чтобы статус "fixed" 
было понятно когда ставить, и было понятно как проверять, что баг пофикшен. И к 
тому, чтобы название бага соответствовало его содержанию.
------- Comment #37 From 2008-02-07 10:23:40 -------
(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 From 2008-02-07 10:43:50 -------
(In reply to comment #37)
> (In reply to comment #35)
> [...]
> 
> Пересборка пакета man потребуется в любом случае, ведь .charset-файл должен
> будет предоставляться именно пакетом man, а не man-pages-foo.

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

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

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

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

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

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

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