1

同じファイルを複数回リストしている rpm 仕様ファイルに問題があります。この仕様では、通常のコンパイルを実行してから、すべてをビルドルートにコピーするスクリプトを作成します。このビルドルート内には、最終システムにインストールする必要がある汎用スクリプトが多数あるため、このディレクトリをリストするだけです。

ただし、問題は、スクリプトの 1 つが変更され、スクリプト内で構成オプションが変更される可能性があることです。そのため、このスクリプトをさまざまな属性とともに としてリストします%config。ただし、これはスクリプトが競合する属性で複数回定義されていることを意味するため、rpmbuild はエラーを出し、インストール パッケージにスクリプトをまったく含めません。

この問題を処理し、rpmbuild に 2 番目の定義のみを使用するように指示する良い方法はありますか? それとも、スクリプトを 2 つの部分 (1 つは構成を含み、もう 1 つは実際のロジックを含む) に分ける必要がありますか?

4

1 に答える 1

1

ディレクトリを指定する代わりに、ファイルリストを作成し、そこから重複ファイルを削除することができます。

だからあなたが何かを持っているところ

%files
%dir foo
%config foo/scriptname

それらのパーツを次のように変更します

find $RPM_BUILD_ROOT -type f | sed -e "s|^$RPM_BUILD_ROOT||" > filelist
sed -i "\|^foo/scriptname$|d" filelist

%files -f filelist
%config foo/scriptname

$ RPM_BUILD_ROOTの代わりに%{buildroot}を使用することもできます。

于 2011-08-16T05:22:03.013 に答える