【发布时间】:2011-03-31 13:03:33
【问题描述】:
当我安装我的应用程序时,我想复制/lib/modules/KERNEL_VERSION/extra 中的一些文件。
问题当然是KERNEL_VERSION不固定。
我可以通过调用"uname -r" 找到它,但是如何在 rpm 规范文件中执行此操作?
另外,如果有更好的方法,我愿意接受。
【问题讨论】:
标签: rpm specifications uname
当我安装我的应用程序时,我想复制/lib/modules/KERNEL_VERSION/extra 中的一些文件。
问题当然是KERNEL_VERSION不固定。
我可以通过调用"uname -r" 找到它,但是如何在 rpm 规范文件中执行此操作?
另外,如果有更好的方法,我愿意接受。
【问题讨论】:
标签: rpm specifications uname
您可以将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 是这个确切问题的解决方案。
【讨论】:
这不是一个好主意,因为您应该使用 %triggerin 在客户端计算机上编译内核模块,这样它才能在内核升级后继续存在。
【讨论】: