在 /usr 可用之前运行的本地软件应该安装在哪里?

在 /usr 可用之前运行的本地软件应该安装在哪里?

我正在编写一个由 udev 规则调用的本地程序IMPORT{program}。通常,我会在 中安装本地软件/usr/local,但这些 udev 规则是在块设备出现时运行的。因此,它们在运行很长时间之前/usr就必须安装。

我相信我还必须将其配置为复制到 initramfs (这可以使用 轻松完成/etc/initramfs-tools/hooks/)。通常情况下,initramfs 上的路径似乎与根文件系统上的路径相同。 (编辑:看来我实际上不必将其添加到 initramfs,挂载 rootfs 后会重新触发事件)

/etc受版本控制,因此最好避免使用二进制文件。

我想我最好的选择可能是将其安装在 中/lib/udev,文件名以 开头,以local-避免与发行版中的任何未来文件发生冲突。这也使得 udev 规则文件更漂亮(因为它不需要指定完整路径)。

这台机器正在运行 Debian Squeeze。该文件有一些标准位置吗?我不相信FHS或者Debian 政策指定一个。

答案1

/lib/udev如果 deb 包提供,我会将它们放入,/etc否则放入。

如果你将程序部署在多台机器上,我建议制作一个 deb 包;它将使得部署和版本跟踪变得更加容易。这Debian 维基有信息,或者您可以阅读Debian 新维护者指南(忽略非技术部分)。dh使这变得轻而易举(甚至还有dh_installudev)。

如果这仅适用于一台机器,我也会将二进制文件放入版本控制中,否则检查源代码和 makefile 并忽略二进制文件。您可能还想在 中放置一个符号链接/lib/udev。我不建议放入未打包的文件,/lib/udev因为您会忘记它的存在。

答案2

/lib/udev看起来比较合理。它不会干扰任何与 无关的事情udev,因此包管理不会受到太大损害。除此之外,您还会在下面留下一个新的子目录/opt/(需要完整路径)。

相关内容