srpmの再構築をシミュレートして不要な依存関係を自動的に計算

srpmの再構築をシミュレートして不要な依存関係を自動的に計算

モックを使用して srpm をビルドし、再ビルドして rpm モックを作成すると、一部の依存関係が自動的に生成されます。ほとんどの場合、これは完全に大丈夫ですが、私が構築しようとしているものはすでに必要なものすべてを備えているので、この動作は望ましくありません。私が解決できない自動要件はlibffmpeg.so()(64bit)です。しかし、前述のようにファイルとして含まれています。

私は(仕様ファイルから)試しました

  • %define __requires_exclude libffmpeg.so
  • 自動要求:いいえ0
  • AutoReqProv:いいえ| 0

要件が手動で指定されているかどうか(たとえば、coreutils)に関係なく、上記のすべての項目が含まれます。

使用されたコマンド:

mock -r epel-7-x86_64 --buildsrpm --no-clean --no-cleanup-after --spec="${RPM_NAME}.spec" --source="${WORKING_DIR}" --resultdir="${WORKING_DIR}" -v
mock -r epel-7-x86_64 --rebuild --no-clean --no-cleanup-after "${WORKING_DIR}"/${RPM_NAME}*.src.rpm --resultdir="${WORKING_DIR}" -v

ベストアンサー1

これはMockと厳密には関係ありません。内部的には、シミュレーションはrpmbuildを使用し、この自動依存関係はrpmbuildによって計算されます。

libffmpeg.soをシステムパスに入れると、次のことができます(ただし、これは自動的に実行する必要があります)。

Provides: libffmpeg.so()(64bit)

ただし、システムパスにない場合にのみ必要をフィルタリングする必要があります。包括的なガイドは次のとおりです。 https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering

私はあなたが阻止できる2つの間違いを指摘したいと思います。

1)累積されません。最後のマクロのみが使用され、前のマクロを置き換えます。

2)文字列全体を一致させる必要がある正規表現です。つまり、libffmpeg.so は "libffmpeg.so()(64bit)" と一致しません。したがって、次のことを行う必要があります。

%global __requires_exclude ^libffmpeg\\.so.*$

さらに、以下を追加する必要があります。

Provides: bundled(<libname>) = <version>

おすすめ記事