Авторские статьи

XnViewMP в snap.


У меня сейчас реально много работы, но игра в снапкрафтера мне помогает отвлечься и научиться чему-то новому. Чем ещё интересен процесс упаковки в пакет snap, так тем, что вы можете не дойти до логического конца, и не сможете представить пакет на стабильном канале Ubuntu Store. Игра где можно проиграть и нельзя сыграть снова - прикольное ощущение. После упаковки XnSketch очень хотел упаковать их флагмана семейства XnView MP.

Статья носит исторический характер. Автор программы сам начал паковать своё детище в flatpak формате и мне лучше самоустраниться. Данную программу вы легко найдёте в графическом установщике Ubuntu Software и KDE Discover.

Первое ложное впечатление было такое. Всё семейство программ автор пишет с использованием фреймворка Qt и с привычным набором дополнительных библиотек. Это действительно так, но отча́сти. Дьявол прячется в мелочах.

Ход мысли автора примерно был понятен, его попытка помочь сделать портативную версию помогала, но сто́ит отметить минусы. Автор программ Gougelet Pierre-Emmanuel сделал на сайте xnview.com даже deb пакеты, но только в них нет понятия зависимостей как класс. В какой системе такой пакет найдёт всё установленное по умолчанию? Непонятно.

Итак, зависимости программы придётся искать самому. К этому времени созрел до написания скрипта find_need_library.sh, который обходит все файлы в папке с программой и с помощью ldd узнаёт каких библиотек нет в данной системе (not found), а какие библиотеки есть, но они тянутся в систему (/usr/lib/). В обоих случаях все библиотеки должны быть найдены и добавлены в пакет snap с программой любым способом, так как технология snap - это самодостаточность.

Правильный способ - узнать из какого deb пакета идёт эта библиотека и добавить имя пакета в раздел stage-package, чтобы snapcraft при упаковке сам скачал-добавил. Но мысль разыскивать теперь имя пакета через dpkg -S /path/to/lib заставляла опускать руки и пойти рабочим, но, возможно, не элегантным путём. Просто заставил find_need_library.sh скопировать нужный программе набор библиотек и поместил его в подкаталог lib/, который уже хранил библиотеки, которые автор программы посчитал достаточными для работы.

И всё! Программа запускалась корректно и корректно начала отображать картинки. Казалось, вот-вот и можно начинать паковать и выкладывать. Но когда обнаружил, что XnViewMP умеет ещё и видео показывать, то стало понятно, что программист не сам будет разбирать и декодировать видео. Обычно подключают к программе какой-либо знаменитый проект. В данном случае это оказался GStreamer версии 0.10. В данном месте совершил ошибку, которую даже и не понял. Всё что нужно было проекту GStreamer из пакетов типа gstreamer0.10-plugins-[good|bad|ugly] распаковал во всё тот же бедный подкаталог lib/. С помощью переменных окружения

export GST_PLUGIN_PATH="$SNAP/usr/bin/lib/"
export GST_PLUGIN_PATH_1_0="$SNAP/usr/bin/lib/"
export GST_PLUGIN_SYSTEM_PATH="$SNAP/usr/bin/lib/"
export GST_PLUGIN_SYSTEM_PATH_1_0="$SNAP/usr/bin/lib/"

указал проекту GStreamer где брать его плагины и библиотеки. Но проблема была в том, что XnViewMP упорно выводил ошибку

ffmpegcolorspace-vo: size 1221120 is not a multiple of unit size 457920

а если увеличить уровень отладки,

export GST_DEBUG="*:3"
export GST_DEBUG_NO_COLOR="1"
export GST_DEBUG_COLOR_MODE="off"
export GST_DEBUG_FILE="$SNAP_USER_COMMON/.debug/gst_debug_file.log"

то можно было найти и

ffmpegcolorspace-vo unknown output size

Но парадокс в том, что внутрь snap пакета поместил утилиты GStreamer, взяв их из deb пакета gstreamer0.10-tools. Среди утилит есть gst-launch-0.10 и она тестовый ролик проигрывала отлично! О чём говорит ошибка XnViewMP? Неизвестен размер output или что-то не так с его размером, который 1221120 не делиться нацело на размер юнита 457920. Не знал что делать и тупо решил с нуля записать нужные плагины и библиотеки GStreamer снова и по-другому. Дело в том, что кашу библиотек в lib/ сделал, скачав нужное с packages.ubuntu.com и, возможно, где-то ошибся с версиями. Взял чистую виртуальную систему Ubuntu 14.04 и в ней установил нужные пакеты GStreamer версии 0.10. Из системы аккуратно взял все плагины и библиотеки и перезаписал всё в многострадальном lib/. Сработало!

Так как XnViewMP - шикарный просмотрщик изображений и инструмент манипулирования ими, то нужен был тестовый набор изображений различных форматов. Ничего толкового не нашёл и пришлось, как обезьянке, скачать из Интернета различные форматы картинок. На просмотре картинки в формате eps, в Терминале мелькнуло сообщение о проблеме с утилитой gs. Давайте разбираться с Ghostscript!
Переменные окружения GS_FONTPATH и GS_LIB помогли указать на нужное.

В программе есть функционал отображения тегов EXIF, которое осуществляется через perl скрипт. С Пёрл знакомство состоялось при упаковке Perl Auto Connector и поэтому особых проблем не возникло.

Вы можете установить XnViewMP через Gnome Software или в Терминале - sudo snap install xnviewmp
Это настраиваемый и очень гибкий просмотрщик и менеджер изображений, который поможет в каталогизации ваших галерей. Есть функционал создания Обзорных листов, где на странице автоматически будут разложены в удобном вам порядке выделенные изображения. Можете делать скриншоты сайтов, заливать выбранные изображения на FTP сервер или отправлять по почте.

XnView MP в snap пакете

XnViewMP поддерживает русский язык, но мне влом делать новые скриншоты помимо тех, что нужно было залить в Ubuntu Store, так что .. английский. Инструмент пакетной обработки позволит легко провести манипуляцию над множеством картинок. Можно провести массовое переименование файлов с поддержкой регулярных выражений.

XnView MP в snap пакете

Есть функционал поиска подобных картинок, чтобы дубликаты не захламляли вашу коллекцию.

XnView MP в snap пакете

Остальные пакеты в Ubuntu Store.
Первый snap пакет. Java программа LanguageTool. sudo snap install languagetool
Второй snap пакет. GTK программа DeaDBeeF. sudo snap install deadbeef-vs
Третий snap пакет. Java программа TuxGuitar. sudo snap install tuxguitar-vs
Четвёртый snap пакет. Java программа Vuze. sudo snap install vuze-vs
Пятый snap пакет. Java программа Oracle SQL Developer Data Modeler. sudo snap install osddm
Шестой snap пакет. Менеджер сессий Perl Auto Connector. sudo snap install pac-vs
Седьмой snap пакет. DRAKON в snap. sudo snap install drakon
Восьмой snap пакет. XnSketch в snap. sudo snap install xnsketch

Дата последней правки: 2019-04-01 08:45:35

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта