- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 flatpak 构建一个 Vala 程序。我需要连接到 mysql 服务器,这就是为什么我需要将 libmysqlclient
与我的 flatpak 捆绑在一起。
这就是我将 mysql_config
添加到 meson.build 文件的原因。
project('zeiterfassunggtk', ['c', 'vala'], version: '0.1.0',
meson_version: '>= 0.40.0',
)
i18n = import('i18n')
mysql_config = find_program('mysql_config')
mysql_vapi = meson.get_compiler('vala').find_library('mysql')
mysql_dep = declare_dependency(c_args: run_command([mysql_config, '--cflags']).stdout().split(),
link_args: run_command([mysql_config, '--libs']).stdout().split(),
dependencies: [mysql_vapi])
subdir('data')
subdir('src')
subdir('po')
meson.add_install_script('build-aux/meson/postinstall.py')
Modules
The module list specifies each of the modules that are to be built as part of the build process. One of these modules is the application itself, and other modules are dependencies and libraries that are bundled as part of the Flatpak. While simple applications may only specify one or two modules, and therefore have short modules sections, some applications can bundle numerous modules and therefore have lengthy modules sections.
GNOME Dictionary’s modules section is short, since it just contains the application itself, and looks like:
"modules": [ {
"name": "gnome-dictionary",
"sources": [
{
"type": "archive",
"url": "https://download.gnome.org/sources/gnome-dictionary/3.26/gnome-dictionary-3.26.0.tar.xz",
"sha256": "387ff8fbb8091448453fd26dcf0b10053601c662e59581097bc0b54ced52e9ef"
}
] } ]As can be seen, each listed module has a name (which can be freely assigned) and a list of sources. Each source has a type, and available types include:
archive - .tar or .zip archive files
git - Git repositories
bzr - Bazaar repositories
file - local file (these are copied into the source directory)
dir - local directory (these are copied into the source directory)
script - an array of shell commands (these are put in a shellscript file)
shell - an array of shell commands that are run during source extraction
patch - a patch (are applied to the source directory)
extra-data - data that can be downloaded at install time; this can include archive or package filesDifferent properties are available for each source type, which are listed in the Flatpak Builder Command Reference.
libmysqlclient
添加到我的 flatpak 以及如何使用
mysql_config
为我的 flatpak 设置正确的编译器标志。
{
"app-id" : "org.gnome.Zeiterfassunggtk",
"runtime" : "org.gnome.Platform",
"runtime-version" : "3.28",
"sdk" : "org.gnome.Sdk",
"command" : "zeiterfassunggtk",
"finish-args" : [
"--share=network",
"--share=ipc",
"--socket=x11",
"--socket=wayland",
"--filesystem=xdg-run/dconf",
"--filesystem=~/.config/dconf:ro",
"--talk-name=ca.desrt.dconf",
"--env=DCONF_USER_CONFIG_DIR=.config/dconf"
],
"build-options" : {
"cflags" : "-O2 -g",
"cxxflags" : "-O2 -g",
"env" : {
"V" : "1"
}
},
"cleanup" : [
"/include",
"/lib/pkgconfig",
"/man",
"/share/doc",
"/share/gtk-doc",
"/share/man",
"/share/pkgconfig",
"/share/vala",
"*.la",
"*.a"
],
"modules" : [
{
"name" : "zeiterfassunggtk",
"buildsystem" : "meson",
"config-opts" : [
"--libdir=lib"
],
"builddir" : true,
"sources" : [
{
"type" : "git",
"url" : "file:///home/g.zehetner/Projekte/ZeiterfassungGtk"
}
]
}
]
}
最佳答案
Flatpak 旨在通过使用容器化技术在 Linux 上分发应用程序。这允许 Flatpak 独立于当前的发行版,如 Ubuntu 和 Fedora。然而,似乎创建 Flatpak 的人需要培养分发打包人员的一些技能。 Flatpak 的依赖项放在 list 的 modules
部分,这些将被构建并包含在 Flatpak 中。以下内容未经测试,因此可能会丢失一些细节,但它旨在概述有助于提供帮助的想法。有几个选项:libmariadb
MariaDB 是 MySQL 的一个分支。在对 Oracle Corporation 收购 MySQL 的担忧之后由社区 fork 。我首先列出了它,因为它似乎是最简单的选择,至少从长远来看是这样。
MariaDB 在 GitHub 上有 releases of mariadb-connector-c
。出于某种原因,GitHub 没有显示这些版本的校验和。所以 MariaDB Foundation's download section 在这里是一个更好的选择。 mariadb-connector-c
可以连接到 MariaDB 和 MySQL。
从源代码来看,mariadb-connector-c
的构建系统是 CMake。 CMakeLists.txt file 中有您可能需要的 WITH_SSL
之类的选项,但下面的 list 片段忽略了 config-opts
的使用。这个 Flatpak GitHub issue 可能有一个关于如何使用 config-opts
进行 CMake 构建的相关示例。
所以我们有一个源代码发布,一个校验和,我们知道构建系统。通过向 list 的 modules
部分添加类似的内容,您应该能够在您的 Flatpak 中包含 mariadb-connector-c
的构建:
{
"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
键。
pkg-config
文件名为
libmariadb.pc
。所以你的 VAPI 需要重命名为
libmariadb.vapi
。您可以将
mysql.vapi
中的
/usr/share/
复制到您的本地应用程序源目录,并重命名为
libmariadb.vapi
。您需要调整您的
meson.build
以将其包含为 VAPI 搜索目录,并且您不再需要搜索
mysql_config
。
pkg-config
将代替
mysql_config
的工作。
maria-connector-c
的一部分。手指交叉它会起作用。 C 头文件中还有一些额外的符号是 MariaDB 特定的。如果要修改 VAPI,请阅读
Writing a VAPI Manually 。请考虑随后将您的改进提交给
Vala mainline repository。
mysqlclient
libmariadb
选项从长远来看可能是更好的选项。还有一个页面
MySQL Connector/C (Archived Versions) ,里面的存档版本是 870 万下载。使用旧版本可能是一个更好的选择。
libmariadb
的 list 。
MySQL source is available from GitHub 也使用 CMake。
CMakeLists.txt
文件确实显示
pkg-config
文件是
mysqlclient.pc
。所以 Vala VAPI 应该是
mysqlclient.vapi
。欢迎对 Vala 存储库的贡献来解决这个问题。通过使用
pkg-config
名称,您不再需要在
mysql_config
中查找
meson.build
。
mysqlclient
或
libmariadb
。什么也没找到。
simple
构建类型。这允许运行命令,如
cp
。因此,更快的选择可能是将本地 MySQL 客户端文件复制到 Flatpak。这至少可以让您在开发过程中取得进展,并重新为最终版本实现强大的解决方案。有关
simple
构建的示例,请参阅此
GitHub issue 和
LibreOffice Flathub manifest。此外,Flatpak 文件结构记录在
Requirement and Conventions 和
typical filesystem inside a Flatpak sandbox 中。
关于vala - Flatpak bundle libmysqlclient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52534250/
我创建了一个 Flatpak 应用程序,但我不知道如何为我的包指定图标和启动器信息。 应用程序有一个桌面文件,但收到此错误消息: "Not exporting share/applications/m
我创建了一个 Flatpak 应用程序,但我不知道如何为我的包指定图标和启动器信息。 应用程序有一个桌面文件,但收到此错误消息: "Not exporting share/applications/m
尝试为我的应用程序构建一个 flatpak,但它需要 inkscape 才能构建应用程序(显然不是应用程序在运行时的依赖,只是构建时间)。 inkscape 安装在主机系统上,但我知道 flatpak
flatpak 运行时究竟是什么?是像JVM(Java)和CPython那样的虚拟机吗?或者它更像是 virtualenv 之类的东西?我已经阅读了 flatpak 文档,但我不清楚。 最佳答案 它更
在尝试构建 gitg flatpak 后,我注意到我的 /var/lib/flatpak/repo 文件夹变得非常大。 我假设这些是构建文件?有什么好方法可以清理这些吗? 我正在使用 Flatpak
我如何使用 flatpak-builder 构建本地源和依赖项? 我可以构建本地资源 flatpak build ../dictionary ./configure --prefix=/app 我可以
我想发布这个是因为我没有在其他地方找到答案,这可能会帮助其他人。 我通过 FlatPak 在我的 Ubuntu 18.04 Bionic Beaver 上安装了 Slack,并希望在我登录后立即启动它
我正在尝试使用 flatpak 构建一个 Vala 程序。我需要连接到 mysql 服务器,这就是为什么我需要将 libmysqlclient 与我的 flatpak 捆绑在一起。 这就是我将 mys
我在 Ubuntu 18.10 上安装了音乐播放器 Melody .我可以安装这个 flatpak 并运行该应用程序,但是当我想将我的外部 USB 驱动器 上的音乐文件夹链接到库时,/media 下没
我最近在 Ubuntu 16.04 LTS 上使用 Flatpak 将我的 IDE 从旧版本 5 更新到 Monodevelop 6。 我有一个与串行端口交互的应用程序,它基本上是一个将设备连接到我的
我安装了最新版本的 MonoDevelop(所以我可以得到最新版本的 NuGet,所以我可以得到最新版本的 Json.NET)。 MonoDevelop 作为 Flatpak 应用程序运行。 我遇到的
我试图通过 apt-get 安装 FlatPak,然后我意识到它不在包数据库中,所以按照他们网站 ( http://flatpak.org/getting/ ) 的建议,我添加了存储库: sudo a
Flatpak 简化了 Linux 上应用的安装。 计算机应用由许多小文件组成,它们被链接在一起以执行一系列的任务。因为它们以“应用”的形式出现,在菜单或桌面上有彩色的图标,我们大多数人认为应
新版本的安卓系统让你对单个应用的访问和权限有了更精细的控制。这一点至关重要,因为许多应用曾经(正在)滥用系统权限。下载一个天气应用,它将要求访问你的通话记录,好像这与天气有什么关系一样。 为什
我已经按照 here 的说明安装了 Pitivi 视频编辑器。 ,但我无法从应用程序菜单启动“Pitivi”,甚至它也没有在此处列出。 当我运行 flatpak list它显示 org.pitivi.
我通过他们网站上的命令行安装了 flatpak,然后按照指示继续添加远程存储库,但是当我尝试安装某些东西时,它说要指定一个远程存储库。我试图从 flathub 安装inkscape。 以下是我使用的命
所以现在 xdg-app 已经重命名为 FlatPak ,除了Snappy,谁能提到每个解决方案提供/缺乏的东西的比较列表?由 Canonical 实现,而 FlatPak 由 Red Hat 实现?
将 Meld 安装为常规 Linux 软件包,将 Meld 设置为 git merge 工具相当简单,这是我的 .gitconfig 的摘录。 [merge] tool = meld [merge
在 Linux 中,我在 Gnome Builder (3.26.4) 中使用 Meson (0.44.0) 作为控制台程序,该程序将使用 Gee 和 GXml。我的意图是在 Genie 中写这个。
我在 VirtualBox 中安装了 Ubuntu MATE 17.04,并按照 MonoDevelop 下载部分中的说明安装了 FlatPak 和 MonoDevelop。 在下载部分它说:最新的稳
我是一名优秀的程序员,十分优秀!