OutWiker, Ubuntu и wxPython. Зоопарк версий

OutWiker, Ubuntu и wxPython. Зоопарк версий

С этими версиями библиотек под Linux у меня уже идет голова кругом. Похоже, придется отказаться (по крайней мере на некоторое время от PPA на launchpad.net) и компилировать все сборки самому, выкладывая просто deb-пакет. И вот почему.

Изначально OutWiker писался под wxPython 2.8, который был в репозиториях Ubuntu (и не только). Версия 2.8 — уже достаточно старенькая, последняя версия ветки 2.8 вышла аж в 2011 году, и с тех пор на протяжении нескольких лет разработчики этой библиотеки работали над wxPython 3.0, которая вышла в конце 2013 года, но перейти на ее я не мог, поскольку в репозиториях Ubuntu ее долгое время не было. И до сих пор ее нет под Ubuntu 14.04, который является LTS (на момент написания этих строк последней версией LTS), поэтому отказываться от поддержки этой версии я не мог. wxPython 3.0 появился только в Ubuntu 15.04.

С другими дистрибутивами Linux тоже начались проблемы, связанные с тем, что в некоторых репозиториях уже нет wxPython 2.8, а есть только версия 3.0.

К сожалению, при переходе с wxPython 2.8 на wxPython 3.0 есть проблемы с обратной совместимостью и просто заменить номер версии библиотеки не получится, нужны некоторые переделки кода.

До сих пор все шло хорошо, я планировал следующую версию OutWiker неспешно перевести на wxPython 3.0, который уже будет в следующем LTS — Ubuntu 16.04, который выйдет уже в этом месяце. Но тут меня ошарашили, сказав, что в Ubuntu 16.04 из репозиториев удалили wxPython 2.8, и OutWiker из репозитория PPA не установится (хотя на сервере launchpad сборка прошла нормально, никаких ошибок я не получил). Итого, у нас есть теперь зоопарк:

  • Ubuntu 14.04 LTS имеет только wxPython 2.8
  • Ubuntu 14.10 имеет только wxPython 2.8 (но поскольку эта версия Ubuntu уже не поддерживается, на нее можно не обращать внимания).
  • Ubuntu 15.04 и Ubuntu 15.10 имеют и wxPython 2.8, и wxPython 3.0.
  • Ubuntu 16.04 LTS имеет только wxPython 3.0.

Я, конечно, форсировал переход на wxPython 3.0, и под Linux уже почти все работает, и я надеюсь, что в течение месяца выложу первую нестабильную версию, которая будет работать на wxPython 3.0, но и тут возникли проблемы.

Оказывается, в сборке wxPython 3.0 есть баг (https://bugs.launchpad.net/ubuntu/+source/wxwidgets3.0/+bug/1388847 ) полуторагодичной давности, который не позволяет использовать движок WebKit из wxPython 3.0. Баг известный, подтвержденный (100% воспроизводится двумя строчками кода), но до сих пор не закрытый. Самое интересное, что если компилировать wxPython 3.0 самостоятельно без каких-либо шаманств (с параметрами по умолчанию), то такой проблемы не возникает.

Этот баг не позволит мне собрать работающий deb-пакет для PPA на сервере launchpad.net (пакет соберется, но у пользователя OutWiker будет падать), поэтому нужно использовать сборку wxPython 3.0 не из репозитория, а собирать библиотеку самому.

Подводя итоги, я пришел к выводу, что пока (пока не будет исправлен баг) придется отказаться от репозитория и выкладывать deb-пакет просто на сайт. Но это уже будет бинарная сборка, для которой не потребуется установка каких-либо дополнительных библиотек у пользователя. Это относится и к будущим версиям, работающих на wxPython 3.0, и нужно будет сделать аналогичные сборки стабильной версии 1.9, работающей под wxPython 2.8. В то же время это позволит мне не зависеть от разработчиков Ubuntu и версий библиотек, которые будут в репозиториях.

Остается еще вариант сделать репозиторий на другом сервере, где у меня хостится сайт, но надо понять, насколько это трудоемко, и когда дойдут до этого руки.

А пользователей OutWiker под Windows вся это возня, разумеется, не касается.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 3, средняя оценка: 5,00)
Загрузка...

комментариев 29

  1. Serghei:

    Предлагаю взглянуть внимательно на http://packagecloud.io/ Это платный проект, но для опенсорса они в частном порядке (нужно написать им письмо) выдают бесплатные аккаунты. Эти ребята позволяют организовать процесс например так:

    * Комитишь в репозиторий изменения
    * CI (которую ты используешь) запускает тесты
    * После успешного выполнения тестов CI билдит пакет
    * CI заливает пакет на packagecloud

    Они работают с десятком операционных систем. Конечному пользователю просто нужно добавить их source list себе в систему и всё — можно получать обновления штатным образом. Можно заливать пакеты в packagecloud и вручную — собирать у себя локально и просто задивать их по http. Кроме того, насколько я понимаю, packagecloud подписывает пакеты в т.ч.

  2. Юрий:

    А не пробовали посмотреть на какие-нибудь аналоги docker для десктоп приложений? Кажется, что-то такое проскакивало относительно недавно

  3. Jenyay:

    Serghei, спасибо, посмотрю, что это такое.

    Юрий, мне кажется, что Docker или что-то подобное будет слишком тяжелое (много весить) по сравнению с самой программой.

  4. Юрий:

    Jenyay, не думаю, что сильно больше — там же не целиком ОС, а просто питон и все либы. Да и кого сейчас волнует размер 🙂

  5. Jenyay:

    Мне казалось, что Docker — это половина операционной системы. А так с помощью cx_Freeze и собираюсь делать сборку в виде питон + библиотеки.

  6. Юрий:

    Jenyay,docker — не всегда половина ОС. Хотя и очень похоже со стороны, да. Но плюс-минус сотня Mb сегодня никого не побеспокоит, кмк.
    Эх, рано я на 16.04 обновился 🙂 У меня пока так:

    ImportError: /usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_html2.x86_64-linux-gnu.so: undefined symbol: wxEVT_WEBVIEW_NAVIGATED

    И что-то
    LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libwx_gtk2u_html-3.0.so.0.2.0 не помогает

    P.S. Спасибо за отличную программу

  7. Jenyay:

    Это как раз тот самый баг в wxPython 3.0 в Ubuntu, о котором я написал в посте. Похоже, она как-то криво скомпилирована. Если wxPython скомпилировать из исходников, то ошибка должна пропасть.

  8. Юрий:

    Я так понимаю, Ubuntu тут не особо виновата — баг в Debian, из которого тянется пакет. Но скилов засабмитить баг в дебиан у меня пока нет 🙁

  9. Юрий:

    Да, у меня был неправильный preload. Вот так почти нормально работает

    LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libwx_gtk2u_webview-3.0.so.0 python runoutwiker.py

  10. Jenyay:

    Это Вы пробуете OutWiker из ветки wx30? Если да, то был бы благодарен за сообщения о том, что не работает. У меня есть список того, какие косяки при переходе я заметил, но может быть есть что-то еще.

  11. Юрий:

    Ага, wx30. У меня пока работает нормально (хотя тестировал еще не все), за исключением одной мелочи — приложение не закрывается по крестику в шапке окна. ПКМ на иконке в трее -> Exit работает нормально. Если что еще обнаружу — обязательно напишу. Спасибо

  12. Jenyay:

    А это в какой графической оболочке?

  13. Юрий:

    Упс. Хотел же написать, но забыл. Kubuntu 16.04, KDE 5.5

  14. Юрий:

    Засабмитил баг в дебиан, но результат тот же — тишина. Может…эт самое… на Qt? 🙂 Сейчас Qt модный.
    Вышла, кстати, убунта 16.04. А не хотите попробовать в Snap-пакет положить? Было бы интересно, мне кажется

  15. Jenyay:

    В свое время я выбрал wx, потому что у Qt сборка получалась в разы жирнее. А snap да, я хочу попробовать.

  16. Юрий:

    Если вам интересно мнение пользователя, то мне абсолютно все равно, сколько весит ПО 🙂

  17. Jenyay:

    Юрий, LD_PRELOAD сильно облегчает жизнь. Спасибо за идею.

  18. Чиро:

    Вот поэтому джава — это энтерпрайз, а питон ни для чего больше как юзерспейс скриптов не годится, лишний раз укрепился в своем мнении. Поддерживаю идеи со снапом и кьюти. Такой софт должен ставиться в домашний каталог и не иметь зависимостей от ОС, чтобы при апгрейде юзер не терял доступ к вики. Спасибо вам за старания.

  19. Sevka:

    Так а есть уже такой deb-пакет? Я скачал ветку wx30, программа запускается, но заметки не показывает и выводит кучу ошибок в консоль.
    Не уверен, что смогу скомпилировать либу…
    Поставил на днях 16.04, но я уже успел подсесть на Вашу программу, и теперь мне без нее грустно.

  20. Jenyay:

    Переход на wxPython 3.0 идет неплохо, я собирался на следующей неделе выложить первую нестабильную версию. Но давайте тогда сегодня вечером я собиру deb-пакет в принципе уже работающей версии (хотя там еще не все доделано) и оставлю тут ссылку.

  21. Jenyay:

    Сделал сборку под Ubuntu 16.04 — https://jenyay.net/uploads/Outwiker/Unstable/outwiker_2.0.0%2B791~xenial_all.deb

    Чтобы ее установить, нужно выполнить команды:

    sudo dpkg -i outwiker_2.0.0+791~xenial_all.deb
    sudo apt-get -f install

    На следующей неделе собираюсь выложить ее в PPA.

  22. Sevka:

    Ура! Работает. Спасибо!

  23. Sevka:

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

    xdg-open — opens a file or URL in the user’s preferred application

    Synopsis

    xdg-open { file | URL }

    xdg-open { —help | —manual | —version }

    Use ‘man xdg-open’ or ‘xdg-open —manual’ for additional info.

  24. Sevka:

    Кнопка «Открыть папку с прикрепленными файлами» также не работает.
    Также не работают ссылки на прикрепленные файлы типа «[[Attach:image.png]]».
    Плагин TableOfContent — не работают ссылки на якоря.

  25. Serghei:

    Это хорошо ребята, что вы находите баги и сразу же сообщаете о них. Но не кажется ли вам, что для этого баг трекер есть, например GitHub 🙂 Я о том, что у кого-то, когда-то, могут возникнуть аналогичные проблемы и человек сможет например найти обсуждение проблемы на GitHub issues, а не будет шарится по гуглу, в надежде что он проиндексировал этот блог 🙂

  26. Jenyay:

    Да, еще проблемы есть. Про открытие файлов не знал, но попробовал — подтверждаю. На первый взгляд это поправить легко. Якоря проверю, это как раз та часть, которую пришлось сильно переписывать под новую версию библиотеки.

  27. Jenyay:

    Поправил открытие файлов и папок. Перезалил новый deb-пакет по старому адресу.

  28. Юрий:

    Интересно, что debian оказался более отзывчивым на багрепорты и уже починил wx у себя https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=821934

  29. Jenyay:

    Здорово, ждем, когда исправление дойдет до Ubuntu.

Leave a comment

Subscribe without commenting