1

msec не желает запускаться ни через центр управления, ни через msecgui

Консоль
[root@localhost dell]# msecgui
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

На KDE было так же, забыл упомянуть...

Обычный юзер
Mageia 8 x86_64 Plasma

2 (2015-01-18 15:57:42 отредактировано AlexL)

BoDun, известно с msecgui, патча нету. Кто в питоне понимает - напишите, пришью: https://bugs.mageia.org/show_bug.cgi?id=13837
BoDun, известно с cheese, это gst-plugins-good такой глючный: https://bugs.mageia.org/show_bug.cgi?id=14499

Разработчик, мейнтейнер, переводчик, по всем вопросам.

3

AlexL, в питоне я не шарю, увы.
Могу разве, что проверить что либо и дать необходимые выводы (главное сказать какие нужны)

Обычный юзер
Mageia 8 x86_64 Plasma

4 (2015-01-18 19:04:59 отредактировано neobht)

BoDun пишет:

msec не желает запускаться ни через центр управления, ни через msecgui

Консоль
[root@localhost dell]# msecgui
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

На KDE было так же, забыл упомянуть...

Тут проблема в том, что криво сделана локализация приложения.
Можете для себя временно пофиксить вот так:
в файле /usr/share/msec/config.py в 319 строке убрать "_", должно быть вот так:
self.log.info(("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))

Просто некоторые умельцы умудряются делать локализацию не совсем понимая специфики языка на котором написана программа.

5

Так тоже не канает ( и  скобка лишняя в конце)

[root@localhost ~]# msecgui
INFO: Starting gui..
INFO: loading exceptions file /etc/security/msec/exceptions: Нет такого файла или каталога
INFO: Нет загруженных исключений
INFO: Обнаружен базовый уровень msec 'standard'
/usr/share/msec/msecgui.py:213: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  filemenu = Gtk.MenuItem(topmenu, use_underline=True)
/usr/share/msec/msecgui.py:219: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  menuitem = Gtk.MenuItem(submenu, use_underline=True)
/usr/share/msec/msecgui.py:236: DeprecationWarning: Gtk.modify_font is deprecated
  label.modify_font(Pango.FontDescription("13"))
/usr/share/msec/msecgui.py:572: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "n_rows, n_columns, homogeneous" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  table = Gtk.Table(4, 4, False)
/usr/lib/python2.7/site-packages/gi/overrides/Gtk.py:1445: DeprecationWarning: Gtk.attach is deprecated
  Gtk.Table.attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding)
/usr/share/msec/msecgui.py:604: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Configure"))
ERROR: Невозможно получить доступ /var/lib/urpmi: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
/usr/share/msec/msecgui.py:618: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Update now"))
/usr/share/msec/msecgui.py:646: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Configure"))
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 248, in __init__
    self.main_notebook.append_page(self.create_summary_ui(), Gtk.Label(label=_("Overview")))
  File "/usr/share/msec/msecgui.py", line 662, in create_summary_ui
    label = Gtk.Label(label=_("Check: %s. Last run: %s") % (check, updated))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
MXLinux 19.3 - xfce
Чем больше я работаю админом, тем больше понимаю,
насколько волшебна фраза - "Нет технической возможности!"

==============================================

6

Скобки все правильные были.

Я на 5бета1 фикс сделал и программа запустилась нормально. Дальше не смотрел и на кнопки интерфейса не нажимал.

Судя по вашим ошибкам локализацию вообще запороли. Тут только маты подойдут smile Ведать допереводили sad

7

Учитесь читать баг репорт, там написано обходное решение.

Разработчик, мейнтейнер, переводчик, по всем вопросам.

8

А если серьезно, то где-то вначале кода допущена ошибка и она тянет столько косяков за собой. Нужно внимательно смотреть. Можно посмотреть как сделано в Роса, там локализация работает и не надо фиксить так грубо. Скорее всего это 1-2 строчки связанные с gettext.

9

И да, как рекомендую на багтрекере - одно из решений - использовать локаль в которой нет кирилицы и отличных от типовой латиницы. Другими словами отрубить локализацию нафиг.

10

Аналогичная ошибка была https://bugs.mageia.org/show_bug.cgi?id=12882

Разработчик, мейнтейнер, переводчик, по всем вопросам.

11

neobht пишет:

Тут проблема в том, что криво сделана локализация приложения.
Можете для себя временно пофиксить вот так:
в файле /usr/share/msec/config.py в 319 строке убрать "_", должно быть вот так:
self.log.info(("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))

Я в деталях не разбирался и баг еще не смотрел (но обязательно попозже гляну, как время появится), но записи вида

_("строка")

Используются при интернационализации приложений с использованием gettext и python-приложения тут не исключения. В противном случае, так не только _, но и скобки лишние будут smile

В Python обычно _ объявляют как переменную и ей присваивают значение объекта (по сути, получается что-то вроде ссылки или указателя на объект), необходимого для использования gettext в исходники.

Я, например, прямо сейчас (ну почти "прямо сейчас", у меня 15 мин. перерыв big_smile) пишу приложение на Python для парсинга крупных локальных словарей (50+, 70+, 100+ тыс. терминов в словаре и разом парсит приложение десяток словарей в поиске нужного термина).
В самом начале исходника с интерфейсом приложения сразу после импорта модулей, пишу

_ = wx.GetTranslation


в моем случае это выглядит так, т.к. я wxPython использую, Mageia'евское ПО использует GTK3 там по другому будет выглядеть аналог этой строки.
И все те строки, которые мне нужно сделать локализируемыми по средствам gettext (исходник перевода в *.po, само приложение использует скомпилиорованный *.mo), у меня выглядят так _("строка"). Например

        file_menu = wx.Menu()
        file_menu.Append(wx.ID_ADD, _("&Add dictionaries\tCtrl+N"), 
                         _("Add new dictionaries to application"))
Fedora & GNOME

12

xxblx, все верно. Именно поэтому я и предложил временно пофиксить эту багу, но как оказалось в бета2 еще больше перевели и полезли баги и в других местах.

скобки там не помешают потому что они будут полезны для оператора  подстановки по шаблону "%".

А корни баги лежат в том, что используются функции не поддерживающие unicode. Они используются в "_". Напишите автору и пусть правит. Для него это пустяк, он должен помнить свой код.

13

neobht, насколько я помню, в python редко встречаются ситуации, когда юникод не поддерживается как таковой. Скорей всего, проблема происходит на этапе скрещивания 16-битной и 8-битной строк, т.е. unicode и str. Собственно, это чисто python2 проблема, в python 3 такого быть не должно, ибо там unicode по умолчанию. Стало быть MSEC использует python 2?
Если при слиянии только латиница в строках, всё проходит нормально, если есть кириллица  - UnicodeDecodeError / UnicodeEncodeError, в зависимости от ситуации. Я с этим периодически сталкиваюсь. Решение только одно, приводить всё к общему знаменателю. Или всё должно быть unicode, соответственно, когда мы берем str и собираемся совершить какие-то действия вместе с unicode, нужно сначала у str сделать decode("кодировка"), либо, наоборот, когда у нас всё - обычный str, у unicode который будет засунут в str надо encode делать. В общем, по ситуации.

Fedora & GNOME

14

xxblx, все верно. Именно так.
Надо автору написать. Это его дело такие фиксы писать.

15

У автора перегруз более 200 багов, помогать не будете - так и останется.

Разработчик, мейнтейнер, переводчик, по всем вопросам.

16

AlexL, я бы рад помочь, но без знания языка - это как пальцем в небо с закрытыми глазами тыкать и угадывать что там.

Обычный юзер
Mageia 8 x86_64 Plasma

17

AlexL, пусть возьмет версию из пакета Роса и сравнит в чем там отличия, либо сами это сделайте и отправьте автору патчем.

18 (2015-01-18 22:31:25 отредактировано AlexL)

Не надо смешить с Росой. Это идёт из-за перехода на gtk3, а в Росе всё заглохло на gtk2 времён Mandriva.
Переводчики тут совершенно не при чём, не надо ля-ля разводить не понимая сути проблемы.

Разработчик, мейнтейнер, переводчик, по всем вопросам.

19

neobht, AlexL, господа, спокойней. Завтра-послезавтра гляну, что там к чему. Если проблема не жестко специфичная для GTK3, поправлю.

Fedora & GNOME

20

AlexL, проблема с msecgui только в Mageia 5? в mga4 нормально?

Fedora & GNOME

21

Никто не жаловался раньше, баг открыт для Магеи 5, проверьте.

Разработчик, мейнтейнер, переводчик, по всем вопросам.

22

У меня на магее 4 i586, msecgui работает нормально.
До этого, на том же ноуте но под mga4 насколько помню, тоже работал корректно.

Обычный юзер
Mageia 8 x86_64 Plasma

23

Глянул msecgui. Как и предполагал, ошибка из-за того, что в unicode "вставляется" str.

_("здесь unicde %s и доллар эс должно замениться на значение после знака процента за скобками") % "а здесь str"

Проблема в том, что вставляется-то не из перевода проблемный str, а берется sys.exc_value[1], т.е. средствами модулям sys берется описание ошибки. Можно или добавить decode в проблемных местах (и оно работает так, я завел во всяком случае), или надо в sys.flags использовать unicode, по идее достаточно было бы запустить интерпретатор с ключом -U, но тогда вывалит в ошибкой модуль string и msecgui не запустится. В общем, поэкспериментирую еще. Может найду более изящное решение, нежели ручной decode.

Fedora & GNOME

24

xxblx⇓ пишет:

Как и предполагал, ошибка из-за того, что в unicode "вставляется" str.

Да. Это ведь мы сразу определили. Это AlexL тут опять вводит в заблуждение.
Такие ошибки автор должен править.

А глюк скорее всего был и в других версиях, он скорее всего был изначально, просто эти строки были не переведены. А теперь их доперевели и все полезло.

25

neobht пишет:

А глюк скорее всего был и в других версиях, он скорее всего был изначально, просто эти строки были не переведены. А теперь их доперевели и все полезло.

Никакого глюка не было. Просто эта проблема к переводу данного конкретного приложения msecgui вообще никак не относится. Скорее к переводу системных ошибок в самой системе.
Я же написал, что проблема с sys.exc_value. Описание ошибки берется из системы. И так как python2 по умолчанию не использует unicode, описание ошибок возвращается в str. 

Или нужно добавлять флаг unicode к sys.flags, что сломает работу модуля string, а значит msecgui работать всё равно не будет.

Или нужно в конкретных местах отлавлить и делать decode. И с этим автор приложения сам никак разобраться точно не сможет. Проблема-то проявляется только на некоторых локалях. Не будет же он у себя в системе использовать ru_RU.UTF-8.

Fedora & GNOME