0

私たちはrpmを使用してWebアプリケーションを内部にデプロイしています。rpmはファイルをインストールし、apache、cron、loggingなどを構成します。

apache、cron、およびロギングの構成が異なる別の場所にインストールされる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

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

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

私が見ることができるこれを行おうとする既存のrpmはありますか?

4

2 に答える 2

1

私の仕様ファイルでは、組み込みのマクロを使用し、テスト アカウント (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
于 2009-11-11T21:49:27.600 に答える
0

別の解決策がありますが、これを達成する別の方法を提案することにしました。ただし、仮想化に問題はありません。本番環境と同じマシンでテスト環境を実行することは安全/安全ではないため、おそらくより良い解決策だと思います。それは言った...

私はおそらく 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}特にマクロは興味深いことに注意してください。両方のバージョンを同時に更新できますが、一方のバージョンまたは他方のバージョンに固有のものを保持したい場合でも可能です。また、データベースや ~/.rpmmacros のカスタム マクロを変更する必要もありません (これは、構築されているシステムによって異なります)。

于 2012-04-24T21:23:36.630 に答える