当我安装我的应用程序时,我想将一些文件复制到/lib/modules/KERNEL_VERSION/extra
.
问题当然是KERNEL_VERSION
没有解决。
我可以通过调用找到它"uname -r"
,但是如何在 rpm 规范文件中执行此操作?
另外,如果有更好的方法,我愿意接受。
当我安装我的应用程序时,我想将一些文件复制到/lib/modules/KERNEL_VERSION/extra
.
问题当然是KERNEL_VERSION
没有解决。
我可以通过调用找到它"uname -r"
,但是如何在 rpm 规范文件中执行此操作?
另外,如果有更好的方法,我愿意接受。
您可以将结果uname -r
插入到目录中(在这里猜测):
/lib/modules/`uname -r`/extra/
在尝试加载为不同内核编译的内核模块时,这个问题的答案可能会给您留下符号不匹配的问题。
要在编译时放置内核模块,请按照 Delan 的回答:
%files
/lib/modules/`uname -r`/extra/*.ko
要将先前编译的内核模块放置在当前运行的内核路径中,您必须在 %post 部分中做一些棘手的事情:
%post
cp /lib/modules/known/location/*.ko /lib/modules/`uname -r`/extra/*.ko
%postun
rm /lib/modules/... # hopefully they have not upgraded their current kernel..
%files
/lib/modules/known/location/*.ko
这将安装可能无法在正在运行的内核上加载的内核模块。通常源 RPM 是这个确切问题的解决方案。
这不是一个好主意,因为您应该在客户端机器上使用 a 编译内核模块,%triggerin
这样它才能在内核升级后继续存在。