RPM:必須設定:somepackage> = 0.5.0 AND somepackage <0.6.0


14

次のような依存バージョンの要件を設定することは可能ですか?

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

したがって、一部のパッケージ0.5.xのみが自動的にインストールされます。

回答:


18

はい、とても簡単です。

書くだけ:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

あなたの.specファイルに。

バージョン要件の追加

パッケージのニーズがもう少し厳しい場合、パッケージの特定のバージョンを要求することができます。必要なのは、次の比較演算子のいずれかを前に付けて、目的のバージョン番号を追加することです。

  • 指定されたバージョンより前のバージョンのパッケージが必要です。

  • 指定されたバージョン以下のバージョンのパッケージが必要です。

  • 指定されたバージョンと同じバージョンのパッケージが必要です。

  • 指定されたバージョン以上のバージョンのパッケージが必要です。

  • 指定されたバージョンより大きいバージョンのパッケージが必要です。

この例を続けて、必要なパッケージバーのバージョンは実際には少なくとも2.7である必要があり、bazパッケージはバージョン2.1である必要があると仮定します。他のバージョンではできません。requireタグ行は次のようになります。require:bar> = 2.7、baz = 2.1

ソース:http : //rpm.org/user_doc/more_dependencies.html

仮想機能に注意/提供

上記のシステムは、ほとんどのパッケージで機能します。ただし、必要なパッケージが[仮想機能] [1]として提供されている場合、または別の名前のパッケージ(つまり、互いに競合しない)によって提供されている場合(つまり、 "Provides:"キーワード)最終的に2つの異なるパッケージがインストールされ、それぞれが要件の1つを満たします。たとえば、specファイルに次が含まれている場合:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

(これらのパッケージをyumで使用できる場合)インストールが行われる可能性があります。

  • postgresql-server 8.1.23-6.el5_8(postgresql-server <9.0)
  • postgresql92-server 9.2.5-1PGDG.rhel5(postgresql-server> = 8.4)

ただし、おそらくpostgresql84-server インストールしません。これは、おそらくインストールするはずだったパッケージです。

(この場合、解決策は単にpostgresql84-serverを要求することですが、他の例では簡単な解決策がない可能性があります。)


「somethingdev(name)> = 1.0.14」に仮想依存関係がありましたが、yum installに行ったとき、RPMリポジトリにあるにもかかわらず、仮想依存関係が必要なバージョンをインストールしませんでした。仮想依存関係をRPMの名前 "something-name-dev> = 1.0.14"に変更する必要があり、それが機能しました。
トレバーボイドスミス

1

パッケージをビルドしようとしているのか、パッケージをインストールしてその依存関係を「制限」しようとしているのかは明確ではありません。

パッケージをリビルドせずに2番目のケースを作成する方法がわかりません。

SRPMを取得して仕様ファイルを編集し、次のようなエントリに必要なエントリ(somepackage0.5.xが必要ですか?)を追加/変更します。

Requires: somepackage = 0.5.0

そして、再構築

rpmbuild -bb -v yourpackage.spec

あなたがそれをやったことがなければ、それは恐ろしいように見えますが、それはあなたの問題を解決します。ディストリビューションのパブリックパッケージを作成する場合は、この方法で依存関係を設定することは一般的に推奨されないため、そのガイドラインを読むことをお勧めします。


2
私はOPについて本当に話すことはできませんが、特定のバージョンだけでなく、特定のバージョンシリーズの最新のアップデートが必要な場合があります。たとえば、2.4.xはパッケージで適切に動作しないため、Apache 2.2.xが必要なことがわかります。具体的に2.2.23を要求すると、2.2.xの将来の更新をインストールできなくなります。
アランクルーガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.