Google Analytics

вторник, 1 февраля 2011 г.

Перестала работать Calibre

Обновил вчера KDE в моем Ubuntu Maverick на версию 4.6. Что сказать, KDE стали ещё стабильней, быстрей и краше. Похоже скоро удобство KDE сильно перевесит все плюсы Gnome. Прийдётся всё-таки добавлять планку оперативы для кед. Но вместе с обновкой случилось и неприятное происшествие. Обновился PyQt4 и SIP. В результате у меня не запускается Calibre-каталогизатор книг и конвертер из одного формата ebooks в другой.

Выхлоп программы:


Traceback (most recent call last):
  File "/usr/bin/calibre", line 19, in 
    sys.exit(main())
  File "/usr/lib/calibre/calibre/gui2/main.py", line 321, in main
    app, opts, args, actions = init_qt(args)
  File "/usr/lib/calibre/calibre/gui2/main.py", line 40, in init_qt
    from calibre.gui2.ui import Main
  File "/usr/lib/calibre/calibre/gui2/ui.py", line 31, in 
    from calibre.gui2.widgets import ProgressIndicator
  File "/usr/lib/calibre/calibre/gui2/widgets.py", line 26, in 
    from calibre.gui2.progress_indicator import ProgressIndicator as _ProgressIndicator
  File "/usr/lib/calibre/calibre/gui2/progress_indicator/__init__.py", line 15, in 
    pi_error)
RuntimeError: Failed to load the Progress Indicator plugin: the sip module implements API v8.0 but the progress_indicator module requires API v7.1


Книг у меня в библиотеке немало, а тут ещё парочка появилась, в том числе две очень важные. А добавить в библиотеку я их не могу. Раз в репозитариях программ calibre старой версии 0.7.18, надо было срочно решать проблему добавлением нового источника программ со свежей версией, или установить новую версию не используя пакетный менеджер.

Первый метод восстановления работы calibre - запуск под рутом команды

sudo python -c "import urllib2; exec urllib2.urlopen('http://status.calibre-ebook.com/linux_installer').read(); main()"

Если вы знакомы с Python, то должны понимать, что Python скачает и выполнит код на Python. Это потенциально опасная операция. Я для интереса загрузил и просмотрел код инсталятора, благо Python я знаю. И могу заверить, это безопасный скрипт. Он узнаёт архитектуру вашего CPU, и загружает для него архив с программой, которую распаковывает в /opt или любой другой каталог, если вы его укажете во время работы скрипта. Тарбол содержит calibre вместе со всеми зависимостями, включая PyTQ4 и SIP. Минус данного подхода в том, что тема у Qt4 будет дефолтная, значит вам прийдётся глазеть на Cleanlooks.

Второй подход состоит в добавлении стороннего репозитория, со свежей сборкой Calibre.Вот, как добавить репу в ваш Ubuntu:

sudo add-apt-repository ppa:n-muench/programs-ppa
sudo apt-get update
sudo apt-get upgrade

Но опыт подсказывает, что при смене версии SIP или PyQt4 можно опять столкнуться с несоответствием API новой и старой версии библиотек. И опять перестанет работать библиотека. Зато не будет нативного вида у приложения. Думаю вот, что делать? Пока использую первый вариант решения проблемы, но Cleanlooks я не люблю. Можно похачить файл gui.py в каталоге с конфигурационными файлами, и прописать свою тему, или GTK+ тему для Gnome и FVWM. Главное, моя библиотека опять доступна:)

Комментариев нет: