Linux

SPEC %files 屬性和 Shell 變數

  • February 8, 2019

我有一個規範文件,它解壓縮一個部署在 shell 中的位置的庫。

IE

%file
${AXIS2_C}/bin/services/services.xml

這失敗了:

error: File not found: root/rpmbuild/BUILDROOT/i386/${AXIS2_C}/bin/services/services.xml

即shell 變數沒有得到擴展。有沒有辦法解決 ?

謝謝!

不幸的是,由 %prep、%build 或 %install 部分開始的 shell 中定義的任何內容都不會保留在建構環境中。您需要定義 %{AXIS2_C},一個MACRO變數(不是 shell 變數):

%define AXIS2_C /usr/local/something

然後在你的兩個shell中將它稱為

make whatever FOO=%{AXIS2_C} # or however you used the env variable

然後在 %files 部分,使用

%file
%{AXIS2_C}/bin/services/services.xml

通常,最初的 %define 位於規範文件的頂部,並附有一些關於它的用途的文件。如果您需要動態設置宏,則必須使用更複雜的 RPM 規范宏命令,例如 %() 來進行 shell 擴展。

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