如何在没有环境变量的情况下管理规范中的%files部分

如何在没有环境变量的情况下管理规范中的%files部分

我正在使用以下命令为软件创建一个包MPICH。二进制文件必须安装在mpich目录。该目录取决于 mpich 版本(/usr/lib64/mpich-3.2//usr/lib64/mpich/)。对于本%install节,我通过变量MPI_BINMPI_LIB宏设置进行管理。但这些变量在本节中并未展开%files

我怎样才能列出二进制文件%files部分中的二进制文件?我读过一篇旧帖子但解决方案不起作用。

答案1

%files当您拥有所需的变量时,可以从安装过程中创建的文件中读取文件名列表。例如

%install
echo /$MPI_BIN/somefile >>myfilelist

然后使用

%files -f myfilelist

答案2

该变量$MPI_LIB仅在节中具有范围%install。您可以尝试宏:

%install
MPI_LIB=some_value
%global mpi_lib $MPI_LIB

%files
/usr/lib64/%{mpi_lib}

但这会失败,因为宏的定义是在解析规范文件的一开始就评估的。因此甚至在运行%install部分之前。

我会用这个:

%global mpi_lib %(echo -n "mpich3")

%files
/usr/lib64/%{mpi_lib}

该构造%( )将作为 shell 脚本运行内容,并将输出用作宏的值。

相关内容