LINUX.ORG.RU

Программисты подскажите! Не работает Anki

 , , ,


0

1

Беру anki с сайта разработчиков, всегда работала без нареканий на федорах и шапках.

После переезда на новый диск и обновления на RHEL-8.4 обнаружил, что не работает. Проверил на 8.3, работает без проблем.

Устанавливаю как рекомендовано из каталога скачанной программы.

sudo ./install.sh

Устанавливает без ошибок, в общем обычная процедура.
Выхлоп такой:

$ anki
Traceback (most recent call last):
  File "runanki.py", line 3, in <module>
  File "/home/dae/venv/lib/python3.8/site-packages/PyInstaller-4.0.dev0+g2886519-py3.8.egg/PyInstaller/loader/pyimod03_importers.py", line 625, in exec_module
  File "aqt/__init__.py", line 20, in <module>
  File "/home/dae/venv/lib/python3.8/site-packages/PyInstaller-4.0.dev0+g2886519-py3.8.egg/PyInstaller/loader/pyimod03_importers.py", line 625, in exec_module
  File "aqt/qt.py", line 13, in <module>
ImportError: /usr/local/share/anki/bin/libgnutls.so.30: version `GNUTLS_3_6_9' not found (required by /lib64/libglib-2.0.so.0)
[2295] Failed to execute script runanki

Клонировал из гита исходники (в тарболле для юзеров бинарники), чтобы глянуть что там в этих "runanki.py", "aqt/__init__.py" и "aqt/qt.py", легче не стало, если надо выложу куда-нибудь содержимое.

Решил собрать сам, в надежде понять чего не хватает. Собрал, работает, ни на что не ругается, так бы и оставил, но у них не предусмотрена установка из исходников, они только для разработки, там лишь два варианта старта программы: оптимизированный и нет, но в обоих случаях в память загружается пару гигов java и node и потом стартует программа, выход из программы не освобождает память от этих процессов, дичь какая-то.

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

Кароче, нового ничего не узнал, кроме того, что программа на моей системе в принципе работает.

Чтобы исключить влияние левых репозиториев, я их выключил и синхронизировал пакеты с релизом 8.4, но это тоже не помогло.

У кого есть rhel, centos, alma, oracle версии 8.4, будьте так добры, проверьте у себя, может я чего в системе накосячил или обновилось криво с 8.3. Там ставить ничего не надо, просто скачать тарболл, зайти в каталог и дернуть ./bin/Anki

UPD. Решение: Программисты подскажите! Не работает Anki (комментарий)

★★★★★

Последнее исправление: papin-aziat (всего исправлений: 1)

Ответ на: комментарий от d_a

Ага, понял, спасибо!

$ ~/pyenv/bin/pip install --upgrade aqt
papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

такой квест не по мне, квалификации не хватит

Самое сложное — найти инструкцию, подходящую к дистрибутиву. Я в RPM-дистрибутивах не разбирался, поэтому не знаю. Но инструкция по бекпортированию пакетов в Debian была достаточно понятная. Не думаю, что в RHEL что-то в разы сложнее.

вечные гигабайты обновлений из-за одной программулины

Там дельты, поэтому обновления не такие большие.

i-rinat ★★★★★
()

Беру anki с сайта разработчиков, всегда работала без нареканий на федорах и шапках.

Установить из репозитория на федорах либо пересобрать федорин .src.rpm для шапки — слишком просто?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

В федорах с 19-го года пересобирают версию 2.1.15…

Текущая стейбл 2.1.44, там уже давно на новый шедьюлер переехали и куча других ништяков.

papin-aziat ★★★★★
() автор топика
Последнее исправление: papin-aziat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Ещё можно найти, из какого дистрибутива они взяли libgnutls.so.30, и взять оттуда ещё libglib-2.0.so.0. У неё уже не будет конфликта версий.

Не получилось. В дебиановских libglib-2.0.so.0 вообще нет никакого GNUTLS, да и куда я его положу, даже если найду? Например я могу притащить из RHEL-8.3 что-нибудь (понять бы что, я тогда пробовал бы даунгрейдить), там-то всё работает.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от shleemypants

Обычное дело, одно работает просто, а другое через жопу :-)

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

В дебиановских libglib-2.0.so.0 вообще нет никакого GNUTLS

Да, там похоже, в GIO модулях, в /lib/x86_64-linux-gnu/gio/modules/libgiognutls.so. С модулями сложнее, там могут быть захардкожены пути, так что трюки с LD_LIBRARY_PATH не сработают, и нет смысла библиотеку куда-либо подкладывать.

Ты удалять libgnutls.so.30 хоть попробовал?

i-rinat ★★★★★
()

У кого есть rhel, centos, alma, oracle версии 8.4, будьте так добры, проверьте у себя

Проверил.

Exception: Anki requires a UTF-8 locale.

Ну вот, а Саахрикту говорил что не всем нужно…

pinus_nigra
()
Ответ на: комментарий от i-rinat

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

Программисты подскажите! Не работает Anki (комментарий)

papin-aziat ★★★★★
() автор топика

У меня такое же «Failed to execute script runanki»

  • Скачал Oracle Linux 8.4
  • Установил под Hyper-V всё по умолчанию (далее-далее-далее)
  • Загрузил тот tar с Anki
  • Получил такую же ошибку как у вас
anonymous
()
Ответ на: комментарий от anonymous

Спасибо, бро! Значит проблема в самом релизе, я не при чём, это важно, а то я обновлял с 8.3, да и в общем что-нибудь постоянно подкручиваю, мог и накосячить.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Пишу с RHEL-8.3, где anki работает отлично, кажись есть!

### Anki
$ strings libgnutls.so.30 | grep GNUTLS
GNUTLS_3_4
 
### RHEL 8.3
$ strings /usr/lib64/libglib-2.0.so.0 | grep GNUTLS
GNUTLS_3_4
### RHEL 8.4
$ strings /usr/lib64/libglib-2.0.so.0 | grep GNUTLS
GNUTLS_3_4
GNUTLS_3_6_9

### RHEL 8.3
$ rpm -qf /usr/lib64/libglib-2.0.so.0
glib2-2.56.4-8.el8.x86_64
### RHEL 8.4
$ rpm -qf /usr/lib64/libglib-2.0.so.0
glib2-2.56.4-10.el8_4.x86_64
papin-aziat ★★★★★
() автор топика
Последнее исправление: papin-aziat (всего исправлений: 2)

Итак, благодаря совместным усилиям решения нашлись!
Спасибо @cocucka @d_a @EXL @i-rinat за пинки в правильном направлении.

Чтобы работали бинарники с сайта

dnf downgrade glib2-2.56.4-8.el8.x86_64
dnf install python3-dnf-plugin-versionlock
dnf versionlock add glib2

Другой вариант, может быть даже лучше, себе оставил такой

dnf install python38
python3.8 -m venv ~/pyenv
~/pyenv/bin/pip install --upgrade pip
~/pyenv/bin/pip install aqt

### обновлять программу
~/pyenv/bin/pip install --upgrade aqt

Mission complete!

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

Жесть какие костыли. Лучше бы из flatpak поставил. Просто ты сейчас пытаешься зафиксировать состояние всей системы, а во flatpak фиксируется состояние контейнера.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)

С таким подходом можно угробить систему и поставить под угрозу ее безопасность. Правильное, рекомендуемое, каноническое решение – контейнер. Если нет готового контейнера в реестрах или готового флатпака – нет проблемы написать докерфайл руками.

Канон таков: все, чего нет в официальных репах Red Hat – ставится в контейнеры.

Тем более, что левый софт очень трудно огородить SELinux.

i586 ★★★★★
()
Ответ на: комментарий от i-rinat

Жесть какие костыли.

Почему? Шапка мягко говоря неторопливый дистр и всякие даунгрейды отдельных версий, полагаю, обычная практика, суди сам:

$ dnf --showduplicates list glib2
...
Installed Packages
glib2.x86_64                     2.56.4-10.el8_4                      @rhel-8-for-x86_64-baseos-rpms
Available Packages
glib2.x86_64                     2.56.4-1.el8                         rhel-8-for-x86_64-baseos-rpms 
glib2.x86_64                     2.56.4-7.el8                         rhel-8-for-x86_64-baseos-rpms 
glib2.x86_64                     2.56.4-8.el8                         rhel-8-for-x86_64-baseos-rpms 
glib2.x86_64                     2.56.4-9.el8                         rhel-8-for-x86_64-baseos-rpms
...

Лучше бы из flatpak поставил.

Учитывая, что я не использую флатпаков (пока обхожусь), эти два решения выглядят куда итереснее! И да, там слоупоки, всё ещё версия 40, когда на дворе уже 44, и так было всегда, ибо сами разрабы не делают флатпак, это поделка энтузиастов.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от i586

С таким подходом можно угробить систему и поставить под угрозу ее безопасность.
левый софт очень трудно огородить SELinux

cat /proc/cmdline
... selinux=0 mitigations=off

Ну ты понял… Скажи, что можно угробить штатным откатом пакета? Да, на что-то это может повлиять, но это уже по ситуации, впрочем, я и выбрал другое решение.

Правильное, рекомендуемое, каноническое решение – контейнер.

Это мультимедийная программа! Про флатпак уже сказал не раз.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от i586

Бывает что софт хочет flatpak новее, чем есть в системе, а новый не ставится из-за протухшего glibc. Приходится обмазываться контейнерами.

cocucka ★★★★☆
()
Ответ на: комментарий от i-rinat

ты сейчас пытаешься зафиксировать состояние всей системы

Да, это важный вопрос, понимать чем грозит фиксация glib2, я хотел его задать, и вот задаю!

В любом случае это решение задачи, оно может быть некорректным для системы, но оно корректно для Анки, это уже надо репортить. Учитывая, что это десктоп, на котором решаются соответствующие задачи, — работа софта важнее системы!

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от cocucka

Будто это что-то плохое.)

Я бы, скорее, в под и поставил. Флатпак труднее контролировать: рантаймы слишком часто обновляются; то, что источники отсанутся на месте – тоже никто не гарантирует.

i586 ★★★★★
()
Ответ на: комментарий от i-rinat

Да, интересен другой вопрос, вот если бы его решить, то всё будет красиво.

Как сделать так, чтобы Анки не спотыкался об этот GNUTLS_3_6_9, ведь в выхлопе libglib есть и GNUTLS_3_6_4, почему она его не юзает, как сказать ей, чтобы использовала?

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

чем грозит фиксация glib2

Если другая программа не захочет более новую glib2, ничем не грозит. Разве что уязвимости не будут патчиться, если они есть.

i-rinat ★★★★★
()
Ответ на: комментарий от cocucka

Я в этом клубе уже с версии 8.2 сижу, хорошо тут, уютно!

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от cocucka

Кстати, хотел тоже на 7-ку переползти, там и пакетиков больше, и гном приемлемый, но всё же староват местами, рендеринг шрифтов ещё нормальный не завезли, в общим решил пердолиться с восьмеркой.

papin-aziat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Разве что уязвимости не будут патчиться, если они есть.

Тут я не спец, но это всё таки энтрепрайз, так что раз уж оставляют в репах старые версии, значит они годны для использования. Были бы категорически не годны, наверно бы выкинули.

papin-aziat ★★★★★
() автор топика

Решение от разработчиков Анки

Забагрепортил, просили подкинуть работающий libglib в Анки, и вуаля, так что вот наилучший вариант на данный момент.

sudo ./install.sh
sudo dnf downgrade -y glib2-2.56.4-8.el8.x86_64
sudo cp /usr/lib64/libglib-2.0.so.0 /usr/local/share/anki/bin/
sudo dnf upgrade -y

Всё! Теперь и Анки и система работают корректно.

papin-aziat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.