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

DocFetcher 1.1.24


Чем мне нравится процесс упаковки софта в snap для пользователей, так это реальной возможностью прокачать свой linux skill. Не устану повторять что сидеть на готовой настроенной системе - это одно, а изучать добровольно-принудительно как под капотом работают те или иные вещи - совершенно другое. Помощниками в изучении часто становятся форумы flatpak, где разработчики сталкиваются с теми же вопросами при изоляции ПО что и snap, а также форумы встраиваемых устройств (embedded system), где люди взяли ядро linux и поверх нужно запустить ещё пару-тройку проектов, а этим проектам требуется по зависимости А и Б, те тянут С и т.д.

Долгое время индексатор и поисковик по содержимому DocFetcher был в версии 1.1.22. Не со зла я пропустил версию 1.1.23 и вот автор программы мне написал письмо с намёком что есть 1.1.24 и можно ли запаковать её?

Автор любой программы не делает абсолютно всё с нуля. Никто не пишет все алгоритмы и функции самостоятельно. Проще взять готовое и подключить к проекту. Вуаля! Это нормальная практика и DocFetcher тут не исключение.

В DocFetcher есть функционал отображения найденного в html страницах не в виде текста, а виде отрендеренной страницы, словно вы видите сайт.

HTML рендер в DocFetcher

Понятно что никто в здравом уме не будет писать свой рендер html и движок JavaScript аля V8. В java программе DocFetcher GUI создан с помощью Standard Widget Toolkit (SWT) и в качестве рендера html в мире linux систем по умолчанию идёт WebKit.

Но время не стоит на месте и новый DocFetcher с обновлёнными под капотом модулями и библиотеками выдал мне - SWT Webkit: Warning, You are using an old version of webkitgtk. (pre 2.4) BrowserFunction functionality will not be avaliable.

Мой сборочный сервер представлял собой Ubuntu 18.04 и паковал DocFetcher всё это время, указывая core18, как основу для snap пакета. Пакет libwebkitgtk-3.0-0 (Web content engine library for GTK+ 2.4.11-3ubuntu3) просил добавить внутрь snap с программой и всё было хорошо! Беглый осмотр показал, что выгоднее обновить сборочный сервер до Ubuntu 20.04 и начать использовать core20 для основы snap пакета. Ничто не предвещало беды! Обновил сервер и понял что теперь вместо libwebkitgtk-3.0-0 нужно указывать libwebkit2gtk-4.0-37 (Web content engine library for GTK 2.32.0-0ubuntu0.20.04.1).

Со стороны кажется небольшое изменение в версии. Ну подумаешь 3 сменилось на 4 в имени пакета, а по факту - 2.4.11 сменилось на 2.32.0. Как же я жестоко ошибался!

Архитектурно новый libwebkit2gtk использует системную шину Dbus и в строгом режиме strict программа DocFetcher падала из-за невозможности WebKit общаться со своим web extension.

SWT WebKitGDBus: error creating DBus server Error binding to address (GUnixSocketAddress): Permission denied
SWT WebKit: error initializing DBus server, dBusServer == 0
(DocFetcher: 493057): GLib-GIO-CRITICAL **: 11: 15: 53.426: g_dbus_server_get_client_address: assertion 'G_IS_DBUS_SERVER (server)' failed

В мире строгого мандатного доступа AppArmor системная шина Dbus в целом не разрешена, так как через неё можно вытворять многие небезопасные вещи: закрывать другие программы, останавливать проигрывание музыки, видео и т.д. Для Dbus есть разрешающие вещи в мире snap (AppArmor) с рядом условий, но это не мой случай и мне это не поможет. В данном месте встрял серьёзно и надолго. Проходили дни за чтением документации и форумов. Стало понятно что от такого радикально обновлённого libwebkit2gtk придётся отказаться.

SWT Browser с версии 4.8 больше не поддерживает рендеринг через Mozilla (XULRunner). Значит и этот путь закрыт. Последней надеждой оставалось использование chromium. Но кроме как указать при старте java параметр org.eclipse.swt.browser.DefaultType=chromium, нужно добавить какие-то дополнительные файлы-модули. Тут встрял надолго ещё раз. Готовых примеров было мало, а собрать самому не хватало знаний мира Java/Maven. В долгих поисках во всемирной паутине наткнулся на готовый проект Chromium SWT Demo и понял какие файлы нужно позаимствовать чтобы и у меня SWT Browser научился рендерить через chromium.

Удалось в очередной раз выкрутиться и после многодневных безуспешных попыток получить положительный результат. Программа DocFetcher не потеряла ни грамма своего функционала по сравнению с "обычной" версией.

Без какой-либо рекламы и продвижения, DocFetcher нашли в Snap Store и установили множество linux пользователей. Это воодушевляет и вдохновляет работать для людей и дальше.

Статистика DocFetcher в snap

Всё хочется помочь какому-либо русскому linux проекту и всё не могу найти такой. Если есть идеи и мысли, то напишите мне!

Дополнительные материалы:
DocFetcher в Snap Store.

Дата последней правки: 2021-05-27 11:18:13

RSS vasilisc.com   


Разделы

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