アプリをインストールするときに、にいくつかのファイルをコピーしたいと思います/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は、この正確な問題の解決策です。
This isn't a good idea because you should compile kernel modules on the client machine with a %triggerin
so it survives a kernel upgrade.