Как устранить неполадки в zbar?

При попытке импортировать zbar под python в Fedora Linux 26 я получаю следующую ошибку:

>>> import zbar
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "zbar/__init__.py", line 1, in <module>
    from .zbar import *
  File "zbar/zbar.py", line 70, in <module>
    _ZB = load_zbar()
  File "zbar/zbar.py", line 63, in load_zbar
    '\n\n'.join(err_txt))
RuntimeError: zbar/_zbar.c:
zbar/_zbar.c: invalid ELF header

Поиск решений этой проблемы привел меня к другому вопросу Stackru, который рекомендовал установить соответствующие пакеты, но он не оказался особенно полезным, так как я уже установил zbar и zbar-devel с помощью моего менеджера пакетов, dnf. Я сам установил эту библиотеку Python, используя единственную инструкцию, представленную на сайте модуля.

Что означает "Неверный заголовок ELF"? Какие шаги я должен предпринять, чтобы устранить это? Короче, как мне заставить работать zbar?

2 ответа

Обычно это означает, что пакет создан для архитектуры, отличной от той, которую вы используете. http://zbar.sourceforge.net/download.html Проверьте по ссылке, я не вижу Fedora 26 в списке.

Опираясь на комментарий Mattdm: Другая возможность заключается в том, что пакет Pypi устарел (последнее обновление 2009). Вы установили через Менеджер пакетов, который является последней версией, затем выполнили установку через Pip (старая версия). Старая версия переписана на правильную. Версия пакета Pypi - 0.10. Версия пакета fedora должна быть чем-то вроде 0.20. Бежать pip freeze | grep zbar Используя правильную версию пипса.

Похоже, что привязки Python включены в исходный исходный код zbar, но по некоторым причинам не включены в Fedora. (Есть zbar-pygtk, но я предполагаю, что это не то, что вам нужно. Я думаю, что лучше всего было бы спросить тех, кто поддерживает пакет в Fedora (см. https://src.fedoraproject.org/rpms/zbar), чтобы также создать привязки Python,

Похоже, что последний выпуск основной ветки разработки был лет десять назад или около того, и модуль PyPi, кажется, основан на этом. Пакет Fedora является более новым, основан на чем-то из https://linuxtv.org/downloads/zbar/. От NEWS файл в архиве:

version 0.20 (2017-04-11):
  As upstream didn't have any version since 2009, created a ZBar fork at linuxtv.org. This release improves a lot V4L2 support, by using libv4l2
  to handle formats that are alien to ZBar, making it compatible with a lot
  more webcam models. Qt support was also updated, making it compatible
  with Qt5. ZBar now have two other GUI applications (zbarcam-qt and
  zbarcam-gtk). With zbarcam-qt, it is now possible to adjust the camera
  controls, making easier to read barcodes using a camera.

Возможно, старый модуль и новый (разветвленный) zbar не работают вместе. Если маршрут "поговорить с упаковщиками" не работает или недостаточно быстр, я бы предложил удалить пакеты Fedora, собрать сам zbar из исходного кода и повторить попытку.

Другие вопросы по тегам