软件容器插件示例
了解如何将软件容器与应用程序管理器集成。
注意:如果您想在 Linux 机器上构建示例,请阅读此内容。
简介
此示例展示了如何将 Pelagicore 的软件容器与应用程序管理器集成。
注意:作为先决条件,在之前熟悉 容器。
在 softwarecontainer.cpp
中,部分容器的配置是硬编码的;所有的功能定义都在位于 service-manifest.d/io.qt.AppliciationManager.Application/
的 JSON 清单文件中。
对 intel GPU 和 VMWare 的虚拟 GPU 进行了 Wayland/OpenGL 透传的测试。
运行软件容器代理
要运行 softwarecontainer-agent,您必须以 root 身份启动它。默认情况下,该代理在系统 D-Bus 上注册自己。因此,您需要有一个策略文件,以便允许代理在系统总线上注册自己。
如果您想通过 --session-bus
参数在会话总线上运行代理,那么您必须将以下行添加到您的其中一个 config.yaml
文件中
containers: softwarecontainer: dbus: 'session'
必须通过 -m
传递与插件一起提供的服务清单目录。否则,由于缺少 io.qt.ApplicationManager.Application
功能,容器设置将失败。
如果您的意图是转发的总线,确保代理可以访问与应用程序管理器使用的相同会话总线。如果代理以 root 身份运行,而应用程序管理器未运行,这可能会很棘手——因为大多数 Linux 发行版的默认会话总线策略禁止 root 访问用户会话总线。然而,您可以通过在 /etc/dbus-1/session.conf
中的 <policy context="default">
元素内添加 <allow user="root"/>
策略来解决这个问题。
此外,请确保在 sudo 运行时告知代理有关您的环境信息
sudo XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS softwarecontainer-agent -m /path/to/application-manager/examples/softwarecontainer-plugin/service-manifest.d/
在应用程序管理器方面,您需要通过向您的 config.yaml
文件添加类似以下行来激活插件
plugins: container: [ "/path/to/libsoftwarecontainer-plugin.so" ]
要实际在软件容器中运行应用程序,您必须添加容器选择配置。有关更多信息,请参阅 容器选择配置。
为了简化桌面开发,通常,您希望将您的 $HOME
目录以只读模式挂载到容器中。这样,您就不需要在每次构建后都将应用程序管理器安装到 /usr/
。只有当您的构建目录位于 $HOME
中时,此行为才有效,否则容器将看不到 appman-launcher-qml 二进制文件。默认情况下,此行为是禁用的;但是,您可以在 config.yaml
文件中通过以下行激活它
containers: softwarecontainer: bindMountHome: yes
© 2024 Qt公司有限公司。此处包含的文档贡献的版权归各自所有者所有。提供的文档根据Free Software Foundation发布的GNU自由文档许可证(版本1.3)的条款进行许可。GNU自由文档许可证版本1.3。Qt及其相关标志是Qt公司在芬兰以及全球其他国家的商标。商标。所有其他商标均属于各自所有者。