環境変数なしで仕様の%filesセクションを管理する方法

環境変数なしで仕様の%filesセクションを管理する方法

次のコマンドを使用してソフトウェア用のパッケージを作成していますMPICH。バイナリは次の場所にインストールする必要があります。mpichディレクトリ。このディレクトリはmpichのバージョンによって/usr/lib64/mpich-3.2/異なります/usr/lib64/mpich/。このセクションでは、%install変数MPI_BINとマクロの設定でMPI_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}

この構成では、%( )コンテンツをシェルスクリプトとして実行し、出力をマクロ値として使用します。

関連情報