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の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ルールはどこに入れるべきですか?私のパッケージは間違いなくシステムに必要とは見なされません。に入れると/libFHS違反ではないですか?最後に、ディストリビューションごとに場所が実際に異なる必要がありますか?すべてのLinuxディストリビューションで1つの場所に配置できないのはなぜですか?

編集する:

/lib私はUbuntu 20.04から、udevルールへのシンボリックリンクの場所が/usr/libそのシステムで問題にならない可能性があることに気づきましたが、まだUbuntu 18.04システムでそのルールをどこに置くべきか疑問に思いました。

ベストアンサー1

はい、Debian派生システムのudevファイルの正式な場所はです/lib/udev。しかし、少なくともソースパッケージからビルドする場合、パッケージビルドはそれを気にする必要はありません。dh_installudev正しい場所にインストールされます。

あなたがしなければならないのは、ルールファイルがで最終的に利用可能であることを確認し、必要に応じて変更するdebian/package.udevことpackageです。シンボリックリンクは大丈夫です。solaar例については、私のパッケージを参照してください。

合併後のこれらの区別は疑問の余地がありますが、/usrudevファイルが存在する理由/libは、その多くがシステムの起動に重要であるためです。必要なudevファイルと必須ではないudevファイルを区別することはあまり意味がないので、すべて/lib/udev

おすすめ記事