Bug 52728

Summary: rpm не выдаёт русского описания пакета
Product: Sisyphus Reporter: ruslandh <ruslandh>
Component: konsoleAssignee: Sergey V Turchin <zerg>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, at, glebfm, imz, ldv, mr.shad, placeholder, ruslandh, vt, zerg
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Локаль установлена
none
Поигрался я тут с локалeми none

Description ruslandh 2025-01-16 08:36:46 MSK
Что-то rpm -qi перестал выдавать русское описания пакетов, несмотря на наличие его в в спеке.

$ rpm -qi newmoon
...
Description :
The New Moon browser, an unofficial branding of the Pale Moon project browser
The palemoon project is a redesign of Mozilla's  Firefox browser component,
written using the XUL user interface language and designed to be
cross-platform.

Хотя :
%description -l ru_RU.UTF8
Интернет-браузер %sname - кроссплатформенная модификация браузера Mozilla Firefox ,
созданная с использованием языка XUL для описания интерфейса пользователя.
Comment 1 Vitaly Chikunov 2025-01-16 21:44:55 MSK
Должна быть установлена локаль.
Comment 2 ruslandh 2025-01-16 21:58:04 MSK
Created attachment 17545 [details]
Локаль установлена

Естественно, или вы что-то другое имеете ввиду ?
Comment 3 Vitaly Chikunov 2025-01-16 22:12:12 MSK
Да всё правильно. А что покажет declare -p LANGUAGE LC_ALL LC_MESSAGES LANG ?
Comment 4 ruslandh 2025-01-16 22:16:17 MSK
Не понял, что за declare  ? 
Если команда , то посмотрю что за пакет
Comment 5 Vitaly Chikunov 2025-01-16 22:18:23 MSK
Пожалуйста, введите в bash промпт и, если не трудно, покажите полный вывод команды:

declare -p LANGUAGE LC_ALL LC_MESSAGES LANG
Comment 6 ruslandh 2025-01-16 22:19:01 MSK
declare -p LANGUAGE LC_ALL LC_MESSAGES LANG 
declare -x LANGUAGE=""
bash: declare: LC_ALL: не найден
bash: declare: LC_MESSAGES: не найден
declare -x LANG="ru_RU.UTF-8"
Comment 7 ruslandh 2025-01-16 22:20:21 MSK
Вначале не понял на что ругается
Comment 8 Vitaly Chikunov 2025-01-16 22:20:39 MSK
Спасибо. Причина такого поведения в том, что переменная окружения LANGUAGE определена в пустую строку.
Comment 9 Vitaly Chikunov 2025-01-16 22:21:08 MSK
(In reply to Vitaly Chikunov from comment #8)
> Спасибо. Причина такого поведения в том, что переменная окружения LANGUAGE
> определена в пустую строку.


Причина такого поведения rpm в том, что переменная окружения LANGUAGE
> определена в пустую строку.
Comment 10 Vitaly Chikunov 2025-01-16 22:21:41 MSK
(In reply to Vitaly Chikunov from comment #8)
> Спасибо. Причина такого поведения в том, что переменная окружения LANGUAGE
> определена в пустую строку.


Причина такого поведения rpm в том, что переменная окружения LANGUAGE определена в пустую строку.
Comment 11 ruslandh 2025-01-16 22:22:25 MSK
Как вылечить ?
Comment 12 ruslandh 2025-01-16 22:23:57 MSK
 LANGUAGE=ru_RU.UTF8 rpm -qi newmoon
Name        : newmoon
Epoch       : 2
Version     : 33.4.1
Release     : alt1
DistTag     : sisyphus+363284.100.1.1
Architecture: x86_64
Install Date: Сб 23 ноя 2024 21:23:01
Group       : Networking/WWW
Size        : 112842366
License     : MPL-2.0 GPL-3.0 and LGPL-2.1+
Signature   : RSA/SHA512, Сб 23 ноя 2024 21:07:38, Key ID ff979dedda2773bb
Source RPM  : palemoon-33.4.1-alt1.src.rpm
Build Date  : Сб 23 ноя 2024 21:06:46
Build Host  : ruslandh-sisyphus.hasher.altlinux.org
Relocations : (not relocatable)
Packager    : Hihin Ruslan <ruslandh@altlinux.ru>
Vendor      : ALT Linux Team
URL         : https://github.com/MoonchildProductions/Pale-Moon
Summary     : Интернет-браузер New Moon - неофициальная сборка браузера Pale Moon
Description :
Comment 13 ruslandh 2025-01-16 22:24:49 MSK
А куда Description пропал ? 
Возмдго я не так в пакете что-то сделал ;-)
Comment 14 Vitaly Chikunov 2025-01-16 22:26:16 MSK
(In reply to ruslandh from comment #13)
> Возмдго я не так в пакете что-то сделал ;-)

Попробуйте определить такую же локаль как в Summary.
Comment 15 ruslandh 2025-01-16 22:29:50 MSK
PS, пойду разбираться ;-)

LANGUAGE=ru_RU.UTF8 rpm -qi alsa-tools 
Name        : alsa-tools
Version     : 1.2.11
Release     : alt1
DistTag     : sisyphus+352677.100.1.1
Architecture: x86_64
Install Date: Вс 14 июл 2024 10:14:22
Group       : System/Kernel and hardware
Size        : 504059
License     : GPLv2+
Signature   : RSA/SHA512, Чт 11 июл 2024 21:38:32, Key ID ff979dedda2773bb
Source RPM  : alsa-tools-1.2.11-alt1.src.rpm
Build Date  : Чт 11 июл 2024 21:38:27
Build Host  : mike-sisyphus.hasher.altlinux.org
Relocations : (not relocatable)
Packager    : Valery Inozemtsev <shrek@altlinux.ru>
Vendor      : ALT Linux Team
URL         : http://www.alsa-project.org/
Summary     : Инструменты ALSA
Description :
Пакет содержит инструменты ALSA (современной звуковой подсистемы Linux),
предназначенные для низкоуровневой работы с некоторыми звуковыми картами
(на чипах Envy24, EMU10K1).
Comment 16 ruslandh 2025-01-16 22:33:18 MSK
....
Summary(ru_RU.UTF-8): Интернет-браузер New Moon - неофициальная сборка браузера Pale Moon
....
%description -n %bname -l ru_RU.UTF8
Интернет-браузер New Moon - неофициальная сборка браузера Pale Moon
Интернет-браузер %sname - кроссплатформенная модификация браузера Mozilla Firefox ,
созданная с использованием языка XUL для описания интерфейса пользователя.

А где штатно у нас должен задаваться LANGUAGE ?
Comment 17 ruslandh 2025-01-16 22:41:51 MSK
Спасибо.
Comment 18 Антон Мидюков 2025-01-17 09:19:44 MSK
Установлен ли startup(Ответ для Vitaly Chikunov на комментарий #10)
> (In reply to Vitaly Chikunov from comment #8)
> > Спасибо. Причина такого поведения в том, что переменная окружения LANGUAGE
> > определена в пустую строку.
> 
> 
> Причина такого поведения rpm в том, что переменная окружения LANGUAGE
> определена в пустую строку.

Почему LANGUAGE должна быть задана?
В /etc/profile.d/lang.sh такой код:
if [ -n "$LANGUAGE" ]; then
		[ "$LANGUAGE" != "$LANG" ] && export LANGUAGE || Unset LANGUAGE

То есть если LANGUAGE равна LANG, произойдёт unset LANGUAGE.
LANGUAGE нужна для указания списка альтернативных локалей через двоеточие.
Обычно это не требуется.
Comment 19 Vitaly Chikunov 2025-01-17 09:48:07 MSK
(In reply to Антон Мидюков from comment #18)
> > Причина такого поведения rpm в том, что переменная окружения LANGUAGE
> > определена в пустую строку.
> 
> Почему LANGUAGE должна быть задана?

?

Кстати

> В /etc/profile.d/lang.sh такой код:

    LANGUAGE="$(grep -s "^$LANG:" /etc/sysconfig/langmap ||:)"

Это не выглядит как не ошибка. Впрочем, дальше все равно делается unset.
Comment 20 Антон Мидюков 2025-01-17 10:06:43 MSK
(Ответ для Vitaly Chikunov на комментарий #19)
> (In reply to Антон Мидюков from comment #18)
> > > Причина такого поведения rpm в том, что переменная окружения LANGUAGE
> > > определена в пустую строку.
> > 
> > Почему LANGUAGE должна быть задана?
> 
> ?
> 

LANGUAGE у нас была задана исключительно в специфичных случаях.
Например, когда основная локаль татарская, а дополнительная русская.
В rpm были изменения на этот счёт или их не было?

> Кстати
> 
> > В /etc/profile.d/lang.sh такой код:
> 
>     LANGUAGE="$(grep -s "^$LANG:" /etc/sysconfig/langmap ||:)"
> 
> Это не выглядит как не ошибка. Впрочем, дальше все равно делается unset.

/etc/sysconfig/langmap пережиток прошлого. Его ни у кого нет.
Comment 21 Vitaly Chikunov 2025-01-17 10:24:27 MSK
(In reply to Vitaly Chikunov from comment #19)
> > В /etc/profile.d/lang.sh такой код:
>     LANGUAGE="$(grep -s "^$LANG:" /etc/sysconfig/langmap ||:)"
> Это не выглядит как не ошибка. Впрочем, дальше все равно делается unset.

(ps. Ошибся перепутав с -q.)

(In reply to Антон Мидюков from comment #20)
> (Ответ для Vitaly Chikunov на комментарий #19)
> > (In reply to Антон Мидюков from comment #18)
> > > > Причина такого поведения rpm в том, что переменная окружения LANGUAGE
> > > > определена в пустую строку.
> > > 
> > > Почему LANGUAGE должна быть задана?
> > 
> > ?
> > 
> 
> LANGUAGE у нас была задана исключительно в специфичных случаях.
> Например, когда основная локаль татарская, а дополнительная русская.

Так и не понял в чем состоит вопрос или почему он ко мне? У меня LANGUAGE не задана. И я не говорил и не считаю, что она "должна быть задана". Почему она задана в пустую строку у ruslandh я не знаю. grep в скриптах /etc/profile.d/ из репозитория не помог найти такой скрипт.

Я не уверен что у нас вообще есть поддержка LANGUAGE.

  $ LANGUAGE=ru date
  Fri Jan 17 10:23:56 AM MSK 2025

> В rpm были изменения на этот счёт или их не было?

Там основной код не менялся с 2008 года, а в 2018 был добавлен свой перекодировщик "convert" через iconv(3) https://bugzilla.altlinux.org/33190 впрочем, вряд ли это имеет отношение к делу?
Comment 22 Vitaly Chikunov 2025-01-17 10:29:19 MSK
Обрабатывается, но не правильно. Думаю, в апстриме так же.

  $ LANGUAGE=ru rpm -q man-pages --qf '%{summary}\n'
  Man (manual) pages from the Linux Documentation Project
  $ LANGUAGE=ru.UTF8 rpm -q man-pages --qf '%{summary}\n'
  Руководства пользователя Linux Documentation Project
Comment 23 ruslandh 2025-01-17 13:13:01 MSK
Created attachment 17549 [details]
Поигрался я тут с локалeми

Поигрался я тут с переменными локали.

Вопрос - я есть определение какая должна за что отвечать, или это куча реализаций одного и того-же от разных авторов ?

Если что, можно ссылку, чтобы прочитать.
Comment 25 Vitaly Chikunov 2025-01-17 23:02:51 MSK
ruslandh, было бы неплохо, если бы вы выяснили где у вас делается LANGUAGE="". Это может означать баг в чем-то другом. 🤷‍♂️
Comment 26 ruslandh 2025-01-18 05:29:50 MSK
Мне трудно сказать, наверное из /etc/profile.d/lang.sh и т.п.
Comment 27 Антон Мидюков 2025-01-18 05:50:05 MSK
(Ответ для Vitaly Chikunov на комментарий #25)
> ruslandh, было бы неплохо, если бы вы выяснили где у вас делается
> LANGUAGE="". Это может означать баг в чем-то другом. 🤷‍♂️

Проблема проявляется в Сизифе на двух DE: kde и lxqt. Пока подозрение на kf6, как общий для них компонент.
Comment 28 Антон Мидюков 2025-01-18 08:14:25 MSK
(Ответ для Антон Мидюков на комментарий #27)
> (Ответ для Vitaly Chikunov на комментарий #25)
> > ruslandh, было бы неплохо, если бы вы выяснили где у вас делается
> > LANGUAGE="". Это может означать баг в чем-то другом. 🤷‍♂️
> 
> Проблема проявляется в Сизифе на двух DE: kde и lxqt. Пока подозрение на
> kf6, как общий для них компонент.

В KDE проявляется в любом терминале, а в других DE только в терминалах konsole и qterminal. Проблема у konsole была ещё и в p5 (проверил на kdesktop).
Какой-то баг qt от начала времён?
Comment 29 ruslandh 2025-01-18 08:47:30 MSK
Да, в tty консоле нормально, даже в KDE. И если из tty консоли запустить xterm 
(DISPLAY=:0 xterm), то тоже нормально. А вот если так-же запустить konsole, то уже описание по английски. 
И еще, даты-то по-русски:

$ rpm -qi man-pages
Name        : man-pages
Version     : 6.05.01
Release     : alt1
DistTag     : sisyphus+326874.100.1.1
Architecture: noarch
Install Date: Ср 13 мар 2024 20:33:06
Group       : Documentation
Size        : 2827373
License     : BSD-2-Clause and BSD-3-Clause and BSD-4-Clause-UC and GPL-1.0-or-later and GPL-2.0-only and GPL-2.0-or-later and Linux-man-pages-copyleft and MIT
Signature   : RSA/SHA512, Чт 10 авг 2023 14:32:23, Key ID ff979dedda2773bb
Source RPM  : man-pages-6.05.01-alt1.src.rpm
Build Date  : Чт 10 авг 2023 14:32:21
Build Host  : glebfm-sisyphus.hasher.altlinux.org
Relocations : (not relocatable)
Packager    : Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Vendor      : ALT Linux Team
URL         : http://www.kernel.org/doc/man-pages/
Summary     : Man (manual) pages from the Linux Documentation Project
Description :
A large collection of man pages (reference material) from the Linux
Documentation Project (LDP).  The man pages are organized into the
....
Comment 30 ruslandh 2025-01-18 09:29:03 MSK
Интересно, в этом случае в xterm:

$ declare -p LANGUAGE LC_ALL LC_MESSAGES LANG 
bash: declare: LANGUAGE: не найден
bash: declare: LC_ALL: не найден
bash: declare: LC_MESSAGES: не найден
declare -x LANG="ru_RU.UTF-8"

А напомню, в konsole:

$ declare -p LANGUAGE LC_ALL LC_MESSAGES LANG 
declare -x LANGUAGE=""
bash: declare: LC_ALL: не найден
bash: declare: LC_MESSAGES: не найден
declare -x LANG="ru_RU.UTF-8"

Т.е. в одном случае переменная LANGUAGE вообще не существует в окружении, а в другом существует, но равна пустой строке (?)
Comment 31 Vitaly Chikunov 2025-01-18 09:34:58 MSK
Возможно, LANGUAGE="" устанавливается в qtermwidget6/lib/Pty.cpp

  // unless the LANGUAGE environment variable has been set explicitly
  // set it to a null string
  // this fixes the problem where KCatalog sets the LANGUAGE environment
  // variable during the application's startup to something which
  // differs from LANG,LC_* etc. and causes programs run from
  // the terminal to display messages in the wrong language
  //
  // this can happen if LANG contains a language which KDE
  // does not have a translation for
  //
  // BR:149300
  setEnv(QLatin1String("LANGUAGE"),QString(),false /* do not overwrite existing value if any */);

2010
Comment 32 Vitaly Chikunov 2025-01-18 09:46:09 MSK
(In reply to Vitaly Chikunov from comment #31)
> Возможно, LANGUAGE="" устанавливается в qtermwidget6/lib/Pty.cpp

То есть ошибки в наших скриптах нет, а libqtermwidget6.so хочет установить его в пустую строку и устанавливает.

  qtermwidget6    antohami @everybody
Comment 33 Антон Мидюков 2025-01-18 09:57:22 MSK
(Ответ для Vitaly Chikunov на комментарий #31)
> Возможно, LANGUAGE="" устанавливается в qtermwidget6/lib/Pty.cpp
> 
>   // unless the LANGUAGE environment variable has been set explicitly
>   // set it to a null string
>   // this fixes the problem where KCatalog sets the LANGUAGE environment
>   // variable during the application's startup to something which
>   // differs from LANG,LC_* etc. and causes programs run from
>   // the terminal to display messages in the wrong language
>   //
>   // this can happen if LANG contains a language which KDE
>   // does not have a translation for
>   //
>   // BR:149300
>   setEnv(QLatin1String("LANGUAGE"),QString(),false /* do not overwrite
> existing value if any */);
> 
> 2010

Этот код взят из Konsole:
https://invent.kde.org/tcanabrava/konsole/-/blob/fix_bidirecctional_text_with_braille/src/Pty.cpp#L233

Они 17 лет назад ВРЕМЕННО пофиксили багу:
https://invent.kde.org/tcanabrava/konsole/-/commit/675094884351142a3d5260258933f74841d756eb
Comment 34 Антон Мидюков 2025-01-18 16:04:23 MSK
(Ответ для Vitaly Chikunov на комментарий #32)
> (In reply to Vitaly Chikunov from comment #31)
>   qtermwidget6    antohami @everybody

Исправил:
[#370498] DONE (try 2) qtermwidget6.git=2.1.0-alt2

Но проблема остаётся у kde и konsole.
Comment 35 Vitaly Chikunov 2025-01-19 00:09:07 MSK
(In reply to Антон Мидюков from comment #34)
> (Ответ для Vitaly Chikunov на комментарий #32)
> > (In reply to Vitaly Chikunov from comment #31)
> >   qtermwidget6    antohami @everybody
> 
> Исправил:
> [#370498] DONE (try 2) qtermwidget6.git=2.1.0-alt2

Спасибо. Как раз хотел предложить брать этот код.
Comment 36 Vitaly Chikunov 2025-01-19 00:09:31 MSK
(In reply to Vitaly Chikunov from comment #35)
> (In reply to Антон Мидюков from comment #34)
> > (Ответ для Vitaly Chikunov на комментарий #32)
> > > (In reply to Vitaly Chikunov from comment #31)
> > >   qtermwidget6    antohami @everybody
> > 
> > Исправил:
> > [#370498] DONE (try 2) qtermwidget6.git=2.1.0-alt2
> 
> Спасибо. Как раз хотел предложить брать этот код.

Убрать. :]
Comment 37 Vitaly Chikunov 2025-01-19 00:23:11 MSK
На всякий случай, подтверждаю, что после обновления qterminal перестал устанавливать LANGUAGE="", то есть это помогло.
Comment 38 Aleksandr Shamaraev 2025-01-19 07:22:38 MSK
Добрый день.

потеря русского описания в секции 
%description -l ru_RU.UTF8

также воспроизводится на kitty, данное поле при отображении rpm -qi input-leap пустое

при этом секция
Summary(ru_RU.UTF-8): Программное обеспечение KVM с открытым исходным кодом

показывается на русском.
Comment 39 Антон Мидюков 2025-01-19 08:07:14 MSK
(Ответ для Aleksandr Shamaraev на комментарий #38)
> Добрый день.
> 
> потеря русского описания в секции 
> %description -l ru_RU.UTF8
> 

Вы не видите, что локаль указана неверно?

> также воспроизводится на kitty, данное поле при отображении rpm -qi
> input-leap пустое
> 
> при этом секция
> Summary(ru_RU.UTF-8): Программное обеспечение KVM с открытым исходным кодом
> 
> показывается на русском.

А тут локаль указана правильно.
Comment 40 Aleksandr Shamaraev 2025-01-19 08:37:05 MSK
(Ответ для Антон Мидюков на комментарий #39)
> (Ответ для Aleksandr Shamaraev на комментарий #38)
> > Добрый день.
> > 
> > потеря русского описания в секции 
> > %description -l ru_RU.UTF8
> > 
> 
> Вы не видите, что локаль указана неверно?
> 

хм.. странно, но в пакете man-pages все показывает при 

%description -l ru_RU.UTF8
Большая коллекция справочного материала разработанного в рамках Linux
Documentation Project (LDP). Материалы сгруппированы по секциям:
	1:  Команды пользователя (введение)
	2:  Системные вызовы
	3:  Вызовы libc
	4:  Устройства (например, hd, sd)
	5:  Форматы файлов и протоколов (например, wtmp, /etc/passwd, nfs)
	6:  Игры (только введение)
	7:  Соглашения, макропакеты, и т.д.
	8:  Системное администрирование (только введение)

https://packages.altlinux.org/ru/sisyphus/srpms/man-pages/specfiles/

ок, я понял, потом пересобиру input-leap
Comment 41 Vitaly Chikunov 2025-01-19 08:42:36 MSK
Если указывать локали в разном написании, то для rpm это две разные локали и он будет показывать одну из них.
Comment 42 Aleksandr Shamaraev 2025-01-19 08:45:39 MSK
(Ответ для Vitaly Chikunov на комментарий #41)
> Если указывать локали в разном написании, то для rpm это две разные локали и
> он будет показывать одну из них.

Я увидел... я понял смысл, большое спасибо. Антон, Вам тоже.