Linux 发行版中软件包安装的 udev 规则的位置是否有所不同?

Linux 发行版中软件包安装的 udev 规则的位置是否有所不同?

除了 RPM 包之外,我还为一些需要安装一些 udev 规则的软件准备了 DEB 包。

我的 RPM 包将规则安装在/usr/lib/udev/rules.d.我的理解是,这/usr/lib/udev/rules.d是第三方(非发行版)软件包的规则应该驻留的地方。

我已经在 Fedora 35 上测试了 RPM 包 - 一切都很好。当相关的 udev 事件被触发时,应用这些规则。

我的 DEB 包当前在同一位置安装相同的规则,但是在全新安装的 Ubuntu 18.04 上测试 DEB 包时,未应用已安装的规则(当我触发相关的 udev 事件时)。我通过将规则移至/etc/udev/rules.d.这让我怀疑/usr/lib/udev/rules.d在基于 Debian 的系统上没有加载规则。

经过一番研究,我发现的所有文档(Debian 上的 RE udev 规则)都声称 Debian 希望规则文件放置在/lib/udev/rules.d

规则文件(相当于 udevd 的更多配置)取自 /run/udev/rules.d、/etc/udev/rules.d 或 /lib/udev/rules.d。包在 /lib/udev/rules.d 中安装规则,而 /etc 和 /run 位置为管理员提供了覆盖包提供的规则的行为的工具。

来源

我的印象是该/lib目录用于存储被认为对系统至关重要的软件包。来自 FHS:

/lib 目录包含引导系统和运行根文件系统中的命令所需的共享库映像,即通过 /bin 和 /sbin 中的二进制文件。

来源

我应该把这些 udev 规则放在哪里?我的包当然不被认为是系统必需的。如果我把它们放进去/lib,那不是违反了 FHS 吗?最后,不同发行版的位置真的应该不同吗?为什么我不能将它们放在所有 Linux 发行版中的一处?

编辑:

我刚刚意识到,自 Ubuntu 20.04 起,/lib符号链接到/usr/lib,因此 udev 规则的位置在这些系统上可能不成问题,但我仍然想知道在 Ubuntu 18.04 上应该将它们放在哪里系统。

答案1

是的,在 Debian 派生系统上,udev 文件的规范位置是/lib/udev.但是,您不必在包构建中关心这一点,至少如果您使用源包进行构建:dh_installudev会将它们安装在正确的位置。

您需要做的是确保您的规则文件最终在 中可用debian/package.udev,并package根据需要进行替换。符号链接很好,请参阅我的solaar包作为示例

自从合并以来,这种区别就没有实际意义了/usr,但 udev 文件存在的原因/lib是它们中的许多对于引导系统至关重要。区分必要和非必要的 udev 文件没有太大意义,因此它们都放在/lib/udev.

答案2

/usr通常是为了发行版提供的文件。外部/第三方配置设置应安装到/etc.例如,VirtualBox 正是这样做的:/etc/udev/rules.d/60-vboxdrv.rules

你说的是你自己的事第三者包,所以你的配置设置是不是要安装到/usr.

man udev说:

udev 规则是从位于系统规则目录/usr/lib/udev/rules.d/usr/local/lib/udev/rules.d易失性运行时目录/run/udev/rules.d本地管理目录 /etc/udev/rules.d

这是另一种看待它的方式具体来说乌德夫:

# dnf whatprovides '/etc/udev/rules.d/*'
Last metadata expiration check: 1:27:10 ago on Thu 19 Jan 2023 02:17:46 PM +05.
garmintools-0.10-23.fc37.i686 : Tools for Garmin GPS-devices
Repo        : fedora
Matched from:
Filename    : /etc/udev/rules.d/51-garmin.rules

icaro-2.0-11.fc37.noarch : Robotic Educational Project
Repo        : fedora
Matched from:
Filename    : /etc/udev/rules.d/icaro.rules

mISDN-2.0.22-9.fc37.i686 : Userspace part of Modular ISDN stack
Repo        : fedora
Matched from:
Filename    : /etc/udev/rules.d/mISDN.rules

ntp-refclock-0.5-4.fc37.x86_64 : Drivers for hardware reference clocks
Repo        : fedora
Matched from:
Filename    : /etc/udev/rules.d/80-ntp-refclock.rules

... many more packages ...

我很确定 Debian/Ubuntu 遵循这一点。

相关内容