打包建议¶
以下是针对 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-benchmark
incus-migrate
lxc-to-incus
lxd-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
子命令。