web-dev-qa-db-ja.com

RedHat:RPMを構築するための一種の模擬環境にパッケージをインストールすることは可能ですか?

RPM .specの依存関係を分離された環境にインストールできるツールはありますか?このような依存関係をシステムにグローバルにインストールすることはありません。root権限がないため、インストールできません。

理由

パッケージをビルドしたい[〜#〜] a [〜#〜]新しいバージョンに依存します[〜#〜] b [〜#〜](システムにグローバルにインストールすることはできません)。

[〜#〜] b [〜#〜]の新しいバージョンをビルドし、ビルドツールをインストールさせるのが好きです[〜#〜] b [〜#〜]-devel隔離された環境に入れて、ビルドに必要なすべてのファイルを提供します[〜#〜] a [〜#〜]

ソリューション

  • これを行うためのツールはありますか?
  • そうでない場合は、chrootと言ってこれを実行しようとするときに何に注意する必要がありますか?
  • これは悪い習慣でしょうか?
10

はい、ツールは mock と呼ばれ、EPELにあります。

典型的な使用法:

rpmbuild -bs mypackage.spec
mock -r epel-6-x86_64 mypackage-0.1-1.src.rpm

これは、RPMを構築するための実際に推奨される方法です。これは、予期しない依存関係が引き込まれないように、プロセスをシステムから分離するためです。

/etc/mock内のファイルを変更して、独自のパッケージやプライベートリポジトリなどをプルするか、ドキュメントでパッケージをmockchroot環境に手動で追加する方法を確認できます。

mockの使用を許可するには、ユーザーをmockグループに追加する必要があることに注意してください。

偶然ではありませんが、RedHatが使用するkojiビルドサーバーはmockを呼び出して個々のパッケージをビルドします。常にlotのパッケージをビルドする必要がある場合は、kojiビルドサーバーのセットアップを検討する価値があるかもしれません。

8
Michael Hampton

本番ホストでパッケージをビルドしようとするのは悪い習慣だと思います。root権限なしでビルドしようとすると、独自のビルドマシンを起動するよりも複雑になります。私が普段していることは次のとおりです。

  1. デスクトップ/ラップトップにVirtualBoxまたは同様のツールをインストールします
  2. 本番環境で使用するOSの32/64VMを作成します
  3. 通常はモック、rpmbuildなどのツールをインストールします
  4. パッケージのRPMと、VMの両方のアーチの追加のDEPを作成します
  5. テスト後、RPMを内部リポジトリにプッシュしてサーバーに配布します
  6. もう一度テストして、適切な依存関係が引き込まれていることを確認します
  7. 構成管理を介してリリースします。
3
Ramin

モックを使いたい。それはあなたがchrootでrpmを構築することを可能にします

https://fedorahosted.org/mock/

0
Mike