在 Mageia 上为两个不同的硬件系统创建 rpm

在 Mageia 上为两个不同的硬件系统创建 rpm

我正在尝试构建将安装在两个不同硬件设备上的 rpm。对于每个硬件,都有不同的文件和命令需要执行,我希望 rpm 根据其主板类型自动检测硬件。

更改发生在安装、发布和文件部分。

我正在尝试设置一个全局变量,它将在开始时检查主板,并且所有其他部分在 if 语句中使用此变量来确定要安装什么。

我知道变量通常不会在部分之间传递,但我认为有一种解决方法。

我尝试过的:

  1. 使用 %global 从前一节设置变量,该值不会传递给其他部分。
  2. 在 spec 文件的开头设置宏来读取主板(cat /sys/devices/virtual/dmi/id/board_name)但在其他部分它显示为空。

答案1

指定spec两个部分:

  • 在您的上运行的命令建造机器为了建造rpm(在您的情况下是和%install部分%files
  • 何时运行命令安装任何rpm主持人(就你的情况而言%post

因此你不能在这两个部分之间共享变量。

另外,在构建软件包时,您将在构建时检查主板(在您的建造机器,而不是主持人。我建议采取以下方法:

%install
# install here all files for all main-board types. for example:
cp board1 $RPM_BUILD_ROOT/usr/lib/package/board1
cp board2 $RPM_BUILD_ROOT/usr/lib/package/board2

%post
if [ "$(cat /sys/devices/virtual/dmi/id/board_name)" == "board1" ]
then
    ln -s /usr/lib/package/board1 /path/where/you/want/board-files
else
    ln -s /usr/lib/package/board1 /path/where/you/want/board-files
fi

%files
/usr/lib/package/board*
%ghost /path/where/you/want/board-files

相关内容