Flatpak стремится распространять приложения в Linux с использованием технологий контейнеризации.Это позволяет Flatpak быть независимым от текущих дистрибутивов, таких как Ubuntu и Fedora.Похоже, однако, что человеку, создающему Flatpak, необходимо развить некоторые навыки дистрибутивного упаковщика.Зависимости для Flatpak находятся в разделе манифеста modules
, и они будут созданы и включены в Flatpak.То, что следует, не проверено, поэтому некоторые детали могут отсутствовать, но оно имеет целью дать обзор идей, чтобы помочь.Есть несколько вариантов:
libmariadb
MariaDB - это форк MySQL.Создано сообществом после опасений по поводу приобретения MySQL корпорацией Oracle.Я перечислил это первым, потому что это кажется самым простым вариантом, по крайней мере, в долгосрочной перспективе.
MariaDB имеет выпусков mariadb-connector-c
на GitHub.По какой-то причине GitHub не показывает контрольные суммы для этих выпусков.Так что раздел загрузки Фонда MariaDB является лучшим вариантом здесь.mariadb-connector-c
может подключаться как к MariaDB, так и к MySQL.
Исходя из исходного кода, система сборки для mariadb-connector-c
называется CMake.В файле CMakeLists.txt есть варианты, например WITH_SSL
, которые могут вам понадобиться, но приведенный ниже фрагмент манифеста игнорирует использование config-opts
.Эта проблема Flatpak GitHub может иметь соответствующий пример того, как использовать config-opts
для сборки CMake.
Итак, у нас есть исходный выпуск, контрольная сумма и мы знаем систему сборки.Добавив что-то вроде этого в раздел modules
вашего манифеста, вы сможете включить сборку mariadb-connector-c
в свой Flatpak:
{
"name": "mariadb-connector-c",
"buildsystem": "cmake",
"sources": [
{
"type": "archive",
"url": "https://downloads.mariadb.org/f/connector-c-3.0.8/mariadb-connector-c-3.0.8-src.tar.gz",
"sha256": "2ca368fd79e87e80497a5c9fd18922d8316af8584d87cecb35bd5897cb1efd05"
}
]
}
Это также пропускает клавишу cleanup
.
Основная проблема - заставить его работать с вашим приложением Vala.Файл pkg-config
называется libmariadb.pc
.Таким образом, ваш VAPI должен быть переименован в libmariadb.vapi
.Вы можете скопировать mysql.vapi
из /usr/share/
в локальный каталог исходного приложения и переименовать в libmariadb.vapi
.Вам нужно будет настроить meson.build
, чтобы включить его в качестве каталога поиска VAPI, и вам больше не нужно будет искать mysql_config
.pkg-config
вместо этого выполнит работу mysql_config
.
Похоже, что заголовочные файлы MySQL C остаются частью maria-connector-c
.Скрестив пальцы, это будет просто работать.В заголовках C есть дополнительные символы, специфичные для MariaDB.Если вы хотите изменить VAPI, прочитайте Запись VAPI вручную .Пожалуйста, рассмотрите возможность отправки ваших улучшений в основное хранилище Vala впоследствии.
mysqlclient
Похоже, что MySQL требует загрузки сервера только для сборки клиента.Я начал с этой страницы под названием Download Connector / C (libmysqlclient) .Это советует Linux «Пакет клиентских утилит доступен на странице загрузки MySQL Community Server».Страница Download MySQL Community Server не упоминает «Пакет клиентских утилит» и позволяет только загрузить пакет объемом 300 МБ + с сервера и клиента C.Вот почему я предположил, что вариант libmariadb
может быть лучшим в долгосрочной перспективе.Также есть страница MySQL Connector / C (Архивные версии) , где заархивированная версия имеет загрузку 8,7 млн.Лучше всего начать с использования старой версии.
Манифест Flatpak будет аналогичен манифесту для libmariadb
. Источник MySQL доступен из GitHub и также использует CMake.
В MySQL 8 CMakeLists.txt
файл действительно показывает, что pkg-config
файл mysqlclient.pc
.Так что Vala VAPI действительно должен быть mysqlclient.vapi
.Вклады в хранилище Vala можно исправить.Используя имя pkg-config
, вам больше не нужно находить mysql_config
в meson.build
.
. Я также выполнил поиск в хранилище Flathub , чтобы узнать, были ли какие-либо другие проекты.используя mysqlclient
или libmariadb
в своих манифестах.Ничего не найдено.
Вариант картона и ленты
Если вам нужно грубое прототипное решение, тогда Flatpak предоставляет тип сборки simple
.Это позволяет запускать команды, например cp
.Поэтому более быстрым вариантом может быть копирование локальных файлов клиента MySQL в Flatpak.Это, по крайней мере, позволит вам продвинуться в разработке и вернуться к реализации надежного решения для финальной версии.См. Этот выпуск GitHub и манифест LibreOffice Flathub для примеров simple
сборок.Также файловая структура Flatpak задокументирована в Требования и соглашения и в типичной файловой системе внутри песочницы Flatpak .