[devel] UA: Re: [re] qt2-ipl3
Alexander Bokovoy
=?iso-8859-1?q?ab_=CE=C1_avilink=2Enet?=
Сб Дек 9 01:26:08 MSK 2000
On Sat, Dec 09, 2000 at 12:08:51AM +0300, Dmitry V. Levin wrote:
> Greetings!
>
> On Thu, Dec 07, 2000 at 10:25:49AM +0000, AB wrote:
> > Стал ставить subj и в ответ получил: пакет Система/Библиотеки не внесен в group index.
> > Что бы это значило?
>
> Это значит, что Вы установили и пользуетесь rpm-3.0.6-ipl11mdk,
> отличительной особенностью которого является наличие перевода стандартных
> названий групп пакетов на русский язык.
>
> К моему ужасу, в процессе эксплуатации выяснилось, что rpm в принципе не
> рассчитан на использование более чем одной локали при
> установке/обновлении/удалении пакетов.
> Другими словами, если Вы сперва устанавливаете пакет (с переведенным
> именем группы) в среде с локалью C, а потом удаляете этот пакет с локалью
> ru_RU.KOI8-R, то Вы со 100% вероятностью получите сообщение:
> пакет <переведенное имя группы> не внесен в group index.
>
> Я сам никогда бы не увидел этой ошибки, ибо всю
> установку/обновление/удаление пакетов произвожу в локали C.
> Огромная благодарность автору вопроса за то, что он невольно пролил свет
> на эту дикую ситуацию.
>
> Важно, что проблема носит принципиальный характер, ибо наименование группы вне
> зависимости от ее дальнейшего использования в программе (будь то внесение
> в базу данных или показ пользователю) проходит через одну и ту же функцию:
> int headerGetEntry(Header h, int_32 tag, int_32 * type, void **p, int_32 *c)
> с входным значением tag == RPMTAG_GROUP.
> Проблема касается не только групп, но и всех переведенных тэгов.
>
> Эта проблема существовала всегда, начиная с момента, как rpm стал
> поддерживать локализацию имен групп. Просто ввиду отсутствия переводов эта
> ошибка была очень большой редкостью (не забудьте, что надо еще локаль
> менять!).
>
> В rpm-current (из cvs) интерфейс работы с базой данных изменился
> значительно, но headerGetEntry остался неизменным, и этой проблемой никто
> не озабочен.
>
> Какие будут предложения?
> Если клонировать интерфейс, то как именно?
> Взвешенные идеи приветствуются.
> Очевидно, я буду поднимать этот вопрос в rpm-list, но этого нет смысла
> делать, пока у нас не появится работающее решение.
Первое решение -- разделить операции внутреннего взаимодействия с БД и отображения
пользователю на две различные функции. headerGetEntry оставить для первой операции,
а для второй добавить headerGetEntryDisplay, тем более, что headerGetEntry это всего
лишь вызов intGetEntry.
Второе решение -- разобраться с вызовами в headerSprintf, которая является интерфейсом
верхнего уровня к данным функциям. Здесь также можно повторить клонирование и мне кажется,
что здесь оно будет необходимо и, возможно, более удобно.
--
Sincerely yours, Alexander Bokovoy
The Midgard Project | www.midgard-project.org | Aurora R&D team
Minsk Linux Users Group | www.minsk-lug.net | www.aurora-linux.com
IPLabs Linux Team | linux.iplabs.ru | Architecte Open Source
-- "One lawyer can steal more than a hundred men with guns."
-- The Godfather
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 240 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20001209/05a255a2/attachment-0001.bin>
Подробная информация о списке рассылки Devel