「カーネルモジュールパッケージガイドライン」の版間の差分
(ページの作成:「Category:パッケージ開発 Category:カーネル en:Kernel module package guidelines it:Kernel module package guidelines {{Package Guidelines}} ==...」) |
(→ファイルの配置場所: 情報を更新) |
||
(同じ利用者による、間の2版が非表示) | |||
3行目: | 3行目: | ||
[[en:Kernel module package guidelines]] |
[[en:Kernel module package guidelines]] |
||
[[it:Kernel module package guidelines]] |
[[it:Kernel module package guidelines]] |
||
+ | [[pt:Kernel module package guidelines]] |
||
+ | [[zh-hans:Kernel module package guidelines]] |
||
{{Package Guidelines}} |
{{Package Guidelines}} |
||
11行目: | 13行目: | ||
=== ガイドライン === |
=== ガイドライン === |
||
+ | |||
カーネルモジュールが含まれているソフトウェア (例えば [[NVIDIA]] ドライバー) をパッケージにするときは: |
カーネルモジュールが含まれているソフトウェア (例えば [[NVIDIA]] ドライバー) をパッケージにするときは: |
||
17行目: | 20行目: | ||
* {{Ic|nvidia}} が {{Ic|nvidia-utils}} に依存するように設定 (何か理由があれば設定しなくてもかまいません)。 |
* {{Ic|nvidia}} が {{Ic|nvidia-utils}} に依存するように設定 (何か理由があれば設定しなくてもかまいません)。 |
||
* {{Ic|kernel26-mm}} など他のカーネル用のモジュールの場合、そのカーネルに対応するカーネルモジュールが含まれた {{Ic|nvidia-mm}} を作成して、同じように {{Ic|nvidia-utils}} に依存させます。 |
* {{Ic|kernel26-mm}} など他のカーネル用のモジュールの場合、そのカーネルに対応するカーネルモジュールが含まれた {{Ic|nvidia-mm}} を作成して、同じように {{Ic|nvidia-utils}} に依存させます。 |
||
− | * {{Ic|nvidia}} |
+ | * {{Ic|nvidia}} がカーネルに依存していることを確認してください。例: {{bc|1=depends=('linux' 'nvidia-utils')}} |
− | depends=('kernel26>=2.6.24-2' 'kernel26<2.6.25-0' 'nvidia-utils') |
||
− | 上記の例で {{Ic|2.6.24-1}} ではなく {{Ic|2.6.24-2}} となっているのは、カーネルのサブシステムに重要な変更があったために、全てのモジュールを再ビルドする必要があるからです。そのような場合では depends のバージョンを変更しないと、古いバージョンのカーネルを使っているユーザーからモジュールが壊れていると報告を受ける可能性があります。 |
||
=== 原則 === |
=== 原則 === |
||
27行目: | 28行目: | ||
== ファイルの配置場所 == |
== ファイルの配置場所 == |
||
+ | |||
− | 既存の同じ名前のモジュールを上書きするようなカーネルモジュールの場合、{{Ic|/lib/modules/xx.yy.zz-ARCH/updates}} ディレクトリにモジュールを配置してください。'''depmod''' が実行されたとき、{{Ic|/lib/modules/xx.yy.zz-ARCH/updates}} ディレクトリのモジュールが優先されます。 |
||
+ | パッケージが既存の同名のモジュールを上書きするようなカーネルモジュールを含んでいる場合、そのようなモジュールは {{ic|/lib/modules/''X''.''Y''.''Z''-arch1-1/updates}} ディレクトリに配置して下さい。 ''depmod'' を実行すると、このディレクトリのモジュールが優先されます。 |
2023年6月28日 (水) 22:31時点における最新版
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
パッケージの分離
システム上に複数のカーネルをインストールしたいというユーザーのために、カーネルモジュールを含むパッケージには特別な扱いが必要です。
カーネルモジュールと他の補助ファイル・ユーティリティが含まれているソフトウェアをパッケージ化するときは、補助ファイルとカーネルモジュールを分離してください。
ガイドライン
カーネルモジュールが含まれているソフトウェア (例えば NVIDIA ドライバー) をパッケージにするときは:
- 標準カーネルのカーネルモジュールだけが含まれる
nvidia
パッケージを作成。 - 補助ファイルが含まれる
nvidia-utils
パッケージを作成。 nvidia
がnvidia-utils
に依存するように設定 (何か理由があれば設定しなくてもかまいません)。kernel26-mm
など他のカーネル用のモジュールの場合、そのカーネルに対応するカーネルモジュールが含まれたnvidia-mm
を作成して、同じようにnvidia-utils
に依存させます。nvidia
がカーネルに依存していることを確認してください。例:depends=('linux' 'nvidia-utils')
原則
別のカーネル向けにビルドされたカーネルモジュールを別のディレクトリに保存することでカーネルモジュールを共存させることができ、補助ファイルはひとつの場所にまとめることができます。モジュールと補助ファイルの両方がパッケージに含まれている場合、パッケージの補助ファイルが衝突してしまうため pacman でモジュールをインストールできなくなってしまいます。
モジュールと他のファイルを分離することで同一マシン上に複数のカーネルが存在する場合でも複数のカーネルモジュールパッケージをインストールして補助ファイルを共有することが可能になります。
ファイルの配置場所
パッケージが既存の同名のモジュールを上書きするようなカーネルモジュールを含んでいる場合、そのようなモジュールは /lib/modules/X.Y.Z-arch1-1/updates
ディレクトリに配置して下さい。 depmod を実行すると、このディレクトリのモジュールが優先されます。