rpm spec call uname -r

Когда я устанавливаю свое приложение, я хотел бы скопировать некоторые файлы в /lib/modules/KERNEL_VERSION/extra,

Проблема, конечно, в том, что KERNEL_VERSION не исправлено

Я могу найти это, позвонив "uname -r", но как мне сделать это в спецификации файла rpm?

Кроме того, если есть лучший метод, я открыт для идей.

3 ответа

Решение

Вы можете интерполировать результат uname -r в каталог (угадай здесь):

/lib/modules/`uname -r`/extra/

Это не очень хорошая идея, потому что вы должны скомпилировать модули ядра на клиентском компьютере с %triggerin так что он выживает при обновлении ядра.

Ответ на этот вопрос, вероятно, оставит вас с несоответствиями символов при попытке загрузить модули ядра, скомпилированные для другого ядра.

Чтобы разместить модули ядра во время компиляции, сделайте так, как ответил Делан:

%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-решения являются решением именно этой проблемы.

Другие вопросы по тегам