打包建议

以下是针对 Incus 打包人员的一些建议。

遵循这些建议应该可以在 Linux 发行版之间提供更可预测的体验。

软件包

通常至少将软件包拆分为 incusincus-client 是个好主意。后者允许仅安装 incus 命令行工具,而不会引入守护进程及其依赖项。

此外,拥有一个包含一些不太常用的工具(如 fuidshiftlxc-to-incusincus-benchmarkincus-migrate)的 incus-tools 软件包可能很有用。

应提供两个组

  • incus-admin,它授予对 unix.socket 套接字的访问权限,并有效地授予对 Incus 的完全控制权。

  • incus,它授予对 user.socket 套接字的访问权限,该套接字为用户提供受限的 Incus 项目。

初始化脚本

以下假设使用 systemd。不使用 systemd 的发行版应尝试坚持使用类似的命名方案,但可能会在套接字激活等方面看到一些差异。

  • incus.service 是启动和停止 incusd 守护进程的主要单元。

  • incus.socketincus.service 单元的套接字激活单元。如果存在,则不应使 incus.service 自行启动。

  • incus-user.service 是负责启动和停止 incus-user 守护进程的单元。

  • incus-user.socketincus-user.service 单元的套接字激活单元。如果存在,则不应使 incus-user.service 自行启动。

  • incus-startup.service 使用 incusd activateifneeded 命令在需要时触发守护进程启动。它还调用 incusd shutdown 以在主机关闭时处理实例的有序关闭。

二进制文件

incusdincus-user 守护进程应保留在用户 PATH 之外。对于 incus-agent 也是如此,它需要在守护进程的 PATH 中可用,但对用户不可见。

应向用户显示的主要二进制文件是 incus

除此之外,还可以提供以下可选二进制文件

  • fuidshift(应保留给 root 用户)

  • incus-benchmark

  • incus-migrate

  • lxc-to-incus

  • lxd-to-incus(应保留给 root 用户)

Incus 代理二进制文件

有两种方法可以提供 incus-agent 二进制文件。

单代理设置

最简单的方法是使 incus-agentincusdPATH 中可用。

在这种情况下,代理应该是系统主架构的 incus-agent 的静态构建。

多代理设置

或者,可以提供 incus-agent 二进制文件的多个构建,从而为多个架构或操作系统提供支持。

为此,应为 incusd 进程设置 INCUS_AGENT_PATH 环境变量,并将其指向包含 incus-agent 构建的路径。

这些构建应以操作系统名称和架构命名。例如 incus-agent.linux.x86_64incus-agent.linux.i686incus-agent.linux.aarch64

文档

网络文档

当启用网络侦听器(core.https_address)时,Incus 可以提供其自己的文档。

为此,发行版 tarball 中提供的文档应作为软件包的一部分提供,并且其路径应通过 INCUS_DOCUMENTATION 环境变量传递给 Incus。

手册页

虽然我们没有专门为 Incus 编写完整的manpage条目,但可以通过 CLI 生成这些条目。

运行incus manpage --all --format=man /target/path 将为每个命令/子命令生成一个单独的页面。

这实际上与通过--help提供的功能相同,因此,除非发行版打包策略要求所有二进制文件都具有manpages,否则通常最好依赖于--helphelp子命令。