13

作業中のビルドシステムをcmakeに変換しようとしていますが、(cpackを介して)生成されるRPMで興味深い問題が発生しました。RPMが必要と考えるすべての依存関係が自動的にリストに追加されます。ライブラリ。

一般的に、それは素晴らしいことですが、私の場合、それは壊滅的です。残念ながら、私たちが構築する開発パッケージは、rpmを使用してシステムデータベースとは別のRPMデータベースにインストールする自社製ツールの1つでインストールされることになります。ばかげていますが、変えられません。これが意味するのは、通常のライブラリが依存するすべてのシステムライブラリ(libcやlibpthreadなど)が、開発パッケージで使用されているRPMデータベースにないということです。したがって、開発パッケージの1つのRPMにシステムライブラリが必須としてリストされている場合、rpmはそれらがインストールされていないと見なすため、インストールできません(それらは、通常のデータベースではなく通常のデータベースにリストされているため)パッケージをインストールするときに使用するように指示されていること)。私たちの現在のビルドのものはこれをうまく処理します、これは、RPMの依存関係としてシステムライブラリがリストされていないためですが、cpackはRPMの必要なライブラリのリストに自動的にデータを入力し、そこにシステムライブラリを配置します。私はそれがそうするのを止める方法が必要です。

に設定CPACK_RPM_PACKAGE_REQUIRESしてみまし""たが、効果がありません。生成されるRPMCpackは、システムライブラリが必須としてリストされたままになります。この時点で私が考えることができるのは、RPM cpackジェネレーターをコピーしてハックし、標準の代わりにそれを使用してやりたいことを実行することですが、それは避けたいと思います。誰かがcpackに必要なライブラリをRPMに追加するのをやめる方法を知っていますか?

4

2 に答える 2

10

の下部を参照してください

http://www.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

autoreqprovタグ—自動依存関係処理を無効にする

RPMの自動依存関係処理が望ましくない場合があります。このような場合、autoreqprovタグを使用して無効にすることができます。このタグは、yes/noまたは0/1の値を取ります。たとえば、自動依存関係処理を無効にするには、次の行を使用できます。

AutoReqProv:いいえ

編集:

これをcmakeで設定するには、を行う必要がありますset(CPACK_RPM_PACKAGE_AUTOREQPROV " no")。それが機能するためには、noの前(または後ろ)に余分なスペースが必要なようです。cpackのRPMモジュールにはバグがあり、変数の一部を3文字より短いものに設定できないようになっているようです。

于 2013-02-07T17:23:53.437 に答える
3

上記のMarkLakataの回答に追加するために、「MaximumRPM」ドキュメントのスナップショットがあります。

http://www.rpm.org/max-rpm-snapshot/s1-rpm-depend-auto-depend.html

それはまた追加します:

autoreqタグとautoprovタグは、それぞれ要件の自動処理を無効にするか、「提供」するためにのみ使用できます。

そして、少なくとも私のバージョンのCPackRPMでは、設定できる同様の変数があるようです。

set(CPACK_RPM_PACKAGE_AUTOREQ " no")

'Requires'の自動依存関係処理のみを無効にします。

于 2014-12-16T14:03:05.320 に答える