質問

rpmを使用して、Webアプリケーションを内部的に展開しています。 rpmはファイルをインストールし、Apache、cron、ロギングなどを構成します。

Apache、cron、およびロギングの設定が異なる別の場所にインストールするrpmのテストバージョンをビルドしたいと思います。実動とテストの両方のrpmを同じマシンにインストールできるはずです。

両方のrpmをインストールすると、次のようになります

/opt/app/www/...
/opt/app-test/www/...
/etc/httpd/conf.d/app.conf
/etc/httpd/conf.d/app-test.conf
/etc/cron.d/app
/etc/cron.d/app-test
/etc/init.d/app
/etc/init.d/app-test

これを達成するための良い方法は何ですか?

  • 仕様をコピーして、すべての名前を" test&quot ;?に変更しますか?
  • prod / test用に異なるサブパッケージを作成しますか?
  • rpmマクロを使用して、仕様の場所と名前を変更しますか?
  • rpm --relocateを使用しますか?

これを実行しようとする既存のrpmがありますか?

役に立ちましたか?

解決

仕様ファイルでは、組み込みマクロそして、テストアカウント(rootではない)とカスタマイズされた〜/ .rpmmacrosを使用して、デフォルトのプレフィックスを変更します:

%_prefix %{_home}

正常に動作します。

テストrpmデータベースを作成することもできます:

$ rpmdb --initdb --dbpath /home/test/var/lib/rpm

そしてこれを.rpmmacrosに入れます:

%_dbpath /home/test/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000

他のヒント

別の解決策がありますが、これを実現する別の方法を提案することにしました。ただし、仮想化に問題はありません。とにかく、実稼働と同じマシンでテスト環境を実行することは安全/セキュアではないため、とにかくより良いソリューションです。とはいえ...

おそらく、1つのスペックファイルをテンプレートとして使用し、次のようにします。

...
# somwwhere in the beginning of spec
%global testrel test

#rest of document
Source0: tarball-with-things%{?testrel}.tar.bz
...
%if ${?testrel:1}${!?testrel:0}
# this will execute only in test rpm
%endif
...

特に%{?testrel} マクロは興味深いものです。両方のバージョンについて同時に更新することができますが、1つのバージョンまたは他のバージョンに固有の何かを保持したい場合は、引き続き可能です。また、データベースへの変更は必要ありません。〜/ .rpmmacrosのカスタムマクロ(ビルド対象のシステムによって異なります)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top