web-dev-qa-db-ja.com

RPMパッケージを変更して依存関係を削除する

tl; dr:

依存関係を自動的に検出するRPMパッケージをビルドします(.specファイルにRequiresはありません)。このRPMパッケージから依存関係を削除するにはどうすればよいですか。

長い話:->動的ライブラリをバイナリと一緒に出荷していますが、RPMSの自動依存関係メカニズムは、その付属ライブラリを依存関係としても明示しています。これを回避する方法は?

3
PnotNP

Rpmにこれらの依存関係を自動的に処理させたくありません。使用できます:

AutoReqProv: no

ただし、バイナリとそれらが依存するライブラリを複数回パッケージ化しています。 rpmがそのような問題を引き起こしたことは一度もありません。多分あなたの包装方法は最適ではありませんか?

自動依存関係の詳細については、次を参照してください。 http://ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

5
Chris Maes

rpm -qp -requires <pkg>.rpmにリストされているこれらの依存関係は、仮想パッケージif 自動依存関係<pkg>.specファイルで指定されます。これらの仮想パッケージは、ライブラリsonameではなく、単なる仮想パッケージ名です(たとえsonameのように見えても)。

例えばFedora 27では、これは機能します

$ rpm -q --whatprovides "libQt5Core.so.5()(64bit)"        
qt5-qtbase-5.9.2-5.fc27.x86_64   

しかし、これはしません

$ rpm -q --whatprovides libQt5Core.so.5
no package provides libQt5Core.so.5
$ rpm -q --whatprovides libQt5Core
no package provides libQt5Core
$ rpm -q --whatprovides Qt5Core
no package provides Qt5Core

独自の<pkg>.rpm自体がライブラリをバンドルする(つまり、これらの仮想パッケージを提供する)場合、これらの仮想パッケージはシステムにインストールされていなくても、パッケージで提供されるため、RPMはメッセージを表示しません。

0
PnotNP