Fedora

如何在沒有環境變數的情況下管理規範中的 %files 部分

  • January 8, 2021

我正在使用MPICH. 二進製文件必須安裝在mpich 目錄中。此目錄取決於 mpich 版本(/usr/lib64/mpich-3.2//usr/lib64/mpich/)。對於該%install部分,我使用變數進行管理,MPI_BINMPI_LIB通過宏進行設置。但這些變數在本%files節中沒有展開。

如何在該%files部分列出二進製文件?我讀過一篇舊文章,但解決方案不起作用。

%files當您擁有所需的變數時,可以從安裝過程中創建的文件中讀取文件名列表。例如

%install
echo /$MPI_BIN/somefile >>myfilelist

然後使用

%files -f myfilelist

該變數$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 腳本執行,輸出用作宏的值。

引用自:https://unix.stackexchange.com/questions/628173