約 150 個のカスタム RPM のソフトウェア スイートがあり、それらの間にかなり複雑な依存関係があります。
- 各パッケージの依存関係のツリーは通常、約 5 レベルの深さです
- (意図的に) 互いに競合するパッケージがいくつかあります
- ほとんどのパッケージは、1 つ以上の Red Hat パッケージと他のカスタム パッケージに依存しています。
私の継続的インテグレーション マシンは、すべてのパッケージをビルドし、それらから yum リポジトリを作成してから、yum リポジトリの ISO をスピンします。これが私のソフトウェアの配布方法です。
私の問題: CI マシンに、ISO 内のすべてのパッケージについて、すべての依存関係が ISO 内の他のカスタム パッケージまたは Red Hat パッケージによって満たされていることを確認してもらいたいです。これは、基盤となるソフトウェアのバグだけでなく、ソース管理で変更をリリース ブランチにプッシュするのを忘れた開発者もトラップすることを目的としています。
これが私がそれを解決したい方法です(より良い方法があると皆さんに教えてください!):各パッケージに対して、次のコマンドでクリーンな仮想マシンを作成します:
- RHEL または CentOS の基本インストール
- RHEL ミラーと自分の ISO を指すパッケージ リポジトリ (ループ デバイス経由でマウント)
...そして、仮想マシンで「yum install xxx」を呼び出します。
問題は、これには時間がかかりすぎることです。各パッケージのインストールを実行すると、仮想マシンの状態が変更されます。各 RPM は実際には「クリーンな」OS でテストする必要があり、再作成にはパッケージごとに最大10 分かかります。VM を変更したり、毎回 VM を最初から再作成したりせずに、パッケージのインストールをテストできますか? 「rpm -i --test」と同様の方法で「--test」コマンドライン引数が yum にあることを期待していましたが、表示されません。依存関係を自動的にダウンロードしないため、「rpm」を直接使用することはできません。
質問:
- 「シミュレート」モードで yum を実行する方法を知っている人はいますか?
- 私の問題を解決するより良い方法はありますか?
ここでは Fedora ではなく RHEL (yum 3.2.22) を使用していますが、おそらく EPEL を使用しても問題ありません。