打包建议¶
以下是针对 Incus 打包人员的一些建议。
遵循这些建议应该可以在 Linux 发行版之间提供更可预测的体验。
软件包¶
通常至少将软件包拆分为 incus 和 incus-client 是个好主意。后者允许仅安装 incus 命令行工具,而不会引入守护进程及其依赖项。
此外,拥有一个包含一些不太常用的工具(如 fuidshift、lxc-to-incus、incus-benchmark 和 incus-migrate)的 incus-tools 软件包可能很有用。
组¶
应提供两个组
incus-admin,它授予对unix.socket套接字的访问权限,并有效地授予对 Incus 的完全控制权。incus,它授予对user.socket套接字的访问权限,该套接字为用户提供受限的 Incus 项目。
初始化脚本¶
以下假设使用 systemd。不使用 systemd 的发行版应尝试坚持使用类似的命名方案,但可能会在套接字激活等方面看到一些差异。
incus.service是启动和停止incusd守护进程的主要单元。incus.socket是incus.service单元的套接字激活单元。如果存在,则不应使incus.service自行启动。incus-user.service是负责启动和停止incus-user守护进程的单元。incus-user.socket是incus-user.service单元的套接字激活单元。如果存在,则不应使incus-user.service自行启动。incus-startup.service使用incusd activateifneeded命令在需要时触发守护进程启动。它还调用incusd shutdown以在主机关闭时处理实例的有序关闭。
二进制文件¶
incusd 和 incus-user 守护进程应保留在用户 PATH 之外。对于 incus-agent 也是如此,它需要在守护进程的 PATH 中可用,但对用户不可见。
应向用户显示的主要二进制文件是 incus。
除此之外,还可以提供以下可选二进制文件
fuidshift(应保留给 root 用户)incus-benchmarkincus-migratelxc-to-incuslxd-to-incus(应保留给 root 用户)
Incus 代理二进制文件¶
有两种方法可以提供 incus-agent 二进制文件。
单代理设置¶
最简单的方法是使 incus-agent 在 incusd 的 PATH 中可用。
在这种情况下,代理应该是系统主架构的 incus-agent 的静态构建。
多代理设置¶
或者,可以提供 incus-agent 二进制文件的多个构建,从而为多个架构或操作系统提供支持。
为此,应为 incusd 进程设置 INCUS_AGENT_PATH 环境变量,并将其指向包含 incus-agent 构建的路径。
这些构建应以操作系统名称和架构命名。例如 incus-agent.linux.x86_64、incus-agent.linux.i686 或 incus-agent.linux.aarch64。
文档¶
网络文档¶
当启用网络侦听器(core.https_address)时,Incus 可以提供其自己的文档。
为此,发行版 tarball 中提供的文档应作为软件包的一部分提供,并且其路径应通过 INCUS_DOCUMENTATION 环境变量传递给 Incus。
手册页¶
虽然我们没有专门为 Incus 编写完整的manpage条目,但可以通过 CLI 生成这些条目。
运行incus manpage --all --format=man /target/path 将为每个命令/子命令生成一个单独的页面。
这实际上与通过--help提供的功能相同,因此,除非发行版打包策略要求所有二进制文件都具有manpages,否则通常最好依赖于--help和help子命令。