我想要构建的是一个 flatpak 运行时,它将用作/usr
表示/my/usr
或主机的符号链接/usr
。这样,现有的容器和主机运行时就可以用于那些不像 flatpak 那样维护得很好的应用程序,或者它所依赖的 flatpak 运行时太大并且可能不需要(例如,相同库的两个副本)。1
由于构建运行时是“不鼓励”的,因此几乎没有文档,只有针对某些环境(fedora、apertis)构建的工具。那么我在哪里可以找到相关的文档呢?是否已经存在类似的项目?
PS:在这些情况下使用 flatpak 与可移植性无关,但沙箱在这里是一个很大的优势。
答案1
这可能不是您正在寻找的答案,但我找到的唯一指南是为 Arch 创建基本运行时
https://wiki.archlinux.org/title/Flatpak
从第 4 节开始:
创建自定义基本运行时
您可以使用 pacman 为 Flatpak 创建自定义的基于 Arch 的基础运行时和基础 SDK。然后您可以使用它来构建和打包应用程序。这是个人使用默认值org.freedesktop.BasePlatform
和org.freedesktop.BaseSdk
运行时的替代方案。
除了 flatpak 之外,您还需要安装 fakeroot,并且为了支持 pacman hooks,还需要安装 fakechroot。
首先,首先创建一个用于构建运行时和可能的应用程序的目录。
$ mkdirmyflatpakbuilddir $ 光盘myflatpakbuilddir
然后,您可以准备一个用于构建运行时基础平台的目录。文件子目录将包含稍后/usr
沙箱中的目录。因此,您需要创建符号链接,以便/usr/share
仍然可以通过通常的路径访问 Arch 的默认值等。
$ mkdir -p我的运行时/文件/var/lib/pacman $触摸我的运行时/文件/.ref $ ln -s /usr/usr/share我的运行时/文件/共享 $ ln -s /usr/usr/include我的运行时/文件/包括 $ ln -s /usr/usr/local我的运行时/文件/本地
使您的主机操作系统字体可用于 Arch 运行时:
$ mkdir -p我的运行时/文件/usr/共享/字体 $ ln -s /运行/主机/字体我的运行时/文件/usr/share/fonts/flatpakhostfonts
您需要并且可能希望pacman.conf
在安装包之前将其调整为运行时。复制/etc/pacman.conf
到您的构建目录,然后进行以下更改:
- 删除该
CheckSpace
选项,这样 pacman 就不会抱怨查找根文件系统以检查磁盘空间时出现错误。 - 删除任何不需要的自定义存储库以及仅主机系统所需的
IgnorePkg
、IgnoreGroup
和设置。NoUpgrade
NoExtract
现在安装运行时的包。
$ fakechroot fakeroot pacman -Syu --root我的运行时/文件--dbpath我的运行时/files/var/lib/pacman --config pacman.conf 基础 $ mv pacman.conf我的运行时/文件/etc/pacman.conf
设置语言环境供编辑使用myruntime/files/etc/locale.gen
。然后重新生成运行时的区域设置。
$ fakechroot chroot我的运行时/文件区域设置-gen
基本 SDK 可以从基本运行时创建,并添加构建包和运行 pacman 所需的应用程序。
$ cp -r我的运行时开发工具包 $ fakechroot fakeroot pacman -S --root mysdk/files --dbpath mysdk/files/var/lib/pacman --config mysdk/files/etc/pacman.conf 基本开发 fakeroot fakechroot --needed
插入有关运行时和 SDK 的元数据。
我的运行时/元数据[Runtime]
name=org.mydomain.BasePlatform
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26
mysdk/元数据
[Runtime]
name=org.mydomain.BaseSdk
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26
将基本运行时和 SDK 添加到当前目录中的本地存储库。您可能需要向他们提供适当的提交消息,例如“My Arch 基础运行时”和“My Arch 基础 SDK”。
$ ostree init --mode archive-z2 --repo=. $ EDITOR =“nano -w”ostree提交-b运行时/org.mydomain.BasePlatform/x86_64/2016-06-26 --tree = dir =我的运行时 $ EDITOR =“nano -w”ostree提交-b运行时/org.mydomain.BaseSdk/x86_64/2016-06-26 --tree = dir = mysdk $ ostree 摘要 -u
安装运行时和 SDK。
$ flatpak Remote-add --user --no-gpg-verify myarchos file://$(pwd) $ flatpak install --user myarchos org.mydomain.BasePlatform 2016-06-26 $ flatpak install --user myarchos org.mydomain.BaseSdk 2016-06-26