争论最用户友好的方式

争论最用户友好的方式

我有一个内核模块,我想分发它(即打包它)。

我想分发它,以便用户不需要执行任何其他操作yum/dnf install kmod-mymodule

  • SRPM:用户必须在其计算机上构建 RPM,然后安装 RPM。我无法将其放入 yum 存储库中
  • RPM:我必须为 RHEL 的所有主要和次要版本构建 RPM。
  • DKMS:可能是解决方案,但它希望用户知道如何使用 dkms,而不是那么透明。

有什么方法可以轻松分发内核模块,以便用户只需要做yum install kmod-mymodule即可为特定机器编译模块?

如果有一个与分发无关的解决方案,我洗耳恭听!

答案1

争论最用户友好的方式

RPM:我必须为 RHEL 的所有主要和次要版本构建 RPM。

但从客户的角度来看,这可能是正确的方法。单包、干净、即时、无依赖、安装。

您可能需要覆盖 6 到 12 个版本 - 所有版本都具有相同的 SRPM。您可以将该 SRPM 上传到您自己的项目让 IBM 支付构建模块所需的电费,或者您可以在运行的 shell 脚本中设置一个循环for config in /etc/mock/rhel+epel-{7,8,9}-{x86_64,aarch64}.cfg ; do mock --rebuild ${your SRPM here} -r ${config} ; done (您可能需要在 /etc/mock 中稍微调整模板以提供不同的 RHEL 次要版本)。

或者,您可以在自己的容器、虚拟机或现场可用的任何内容中进行设置,而不是使用模拟来设置隔离的构建环境。

自动构建目标 RPM。

你会想要使用阿克莫兹,以便每次更新内核(以及第一次安装)时,您的二进制内核模块 RPM 都会自动重建。

这样,您的用户无需执行任何操作,只需安装 akmod 包即可,该包将依赖于内核标头包,该包会与内核一起自动更新。它还取决于必要的构建工具(C 编译器等)。

rpmfusion 的将内核模块打包为 akmod更详细地介绍(仅一点点)。最后,akmod 只是自动构建 kmod RPM 的一种方法。

最好看一下实际的例子。该v4l2loopback-kmod软件包包含一个第三方内核模块,该模块为 Linux 内核的 v4l2 摄像头基础设施添加了视频环回功能。您可以找到规范以及其余的打包文件,这里

相关内容