Linux
SPEC %files 屬性和 Shell 變數
我有一個規範文件,它解壓縮一個部署在 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 擴展。