使用指定的 /usr 和类似目录创建 flatpak 运行时

使用指定的 /usr 和类似目录创建 flatpak 运行时

我想要构建的是一个 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.BasePlatformorg.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 就不会抱怨查找根文件系统以检查磁盘空间时出现错误。
  • 删除任何不需要的自定义存储库以及仅主机系统所需的IgnorePkgIgnoreGroup和设置。NoUpgradeNoExtract

现在安装运行时的包。

$ 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

相关内容