我正在编写一个由 udev 规则调用的本地程序IMPORT{program}
。通常,我会在 中安装本地软件/usr/local
,但这些 udev 规则是在块设备出现时运行的。因此,它们在运行很长时间之前/usr
就必须安装。
我相信我还必须将其配置为复制到 initramfs (这可以使用 轻松完成/etc/initramfs-tools/hooks/
)。通常情况下,initramfs 上的路径似乎与根文件系统上的路径相同。 (编辑:看来我实际上不必将其添加到 initramfs,挂载 rootfs 后会重新触发事件)
/etc
受版本控制,因此最好避免使用二进制文件。
我想我最好的选择可能是将其安装在 中/lib/udev
,文件名以 开头,以local-
避免与发行版中的任何未来文件发生冲突。这也使得 udev 规则文件更漂亮(因为它不需要指定完整路径)。
答案1
/lib/udev
如果 deb 包提供,我会将它们放入,/etc
否则放入。
如果你将程序部署在多台机器上,我建议制作一个 deb 包;它将使得部署和版本跟踪变得更加容易。这Debian 维基有信息,或者您可以阅读Debian 新维护者指南(忽略非技术部分)。dh
使这变得轻而易举(甚至还有dh_installudev
)。
如果这仅适用于一台机器,我也会将二进制文件放入版本控制中,否则检查源代码和 makefile 并忽略二进制文件。您可能还想在 中放置一个符号链接/lib/udev
。我不建议放入未打包的文件,/lib/udev
因为您会忘记它的存在。
答案2
/lib/udev
看起来比较合理。它不会干扰任何与 无关的事情udev
,因此包管理不会受到太大损害。除此之外,您还会在下面留下一个新的子目录/opt/
(需要完整路径)。