2011-11-24 13 views
10

私のアプリケーションをRPMパッケージにパッケージ化しました。例えば、myapp.rpmです。このアプリケーションをインストールしている間、私はユーザーからのいくつかの入力を受けたいと思っています(入力の例としては、 "dev"、 "qa"、 "uat"、 "prod"のようなアプリケーションがインストールされている環境)。入力に基づいて、アプリケーションは適切なファイルをインストールします。アプリケーションのインストール中にパラメータを渡す方法はありますか?RPM - インストール時間パラメータ

P.S .:可能な解決策は、環境ごとにRPMパッケージを作成することです。しかし、私たちのシナリオでは、約20の環境があり、同じアプリケーションに対して20種類のパッケージを持つことは望ましくないため、これは実行可能な選択肢ではありません。

答えて

16

一般に、RPMパッケージにはユーザーの操作が必要ありません。 RPMの人々は、インタラクティブなインストールをしないことがRPMの明確な設計目標であると述べています。最初に使用する前に何らかの種類の入力が必要なパッケージについては、通常は最初の使用時にこの情報を尋ねます。すべてを設定ファイルに入れてマクロなどを使用し、使用可能になる前にアプリケーションを設定する必要があることをユーザに伝えます。

何らかのソートカウントのパラメータをエンドユーザーのやり取りとして渡すことさえできます。私はあなたが望むものは、あなたのプリインストールスクリプトをインストールすることです。何らかの形で環境を自動的に検出し、ファイルをどこかで調べることができます。また、RPMユーザーの観点から、* -qa.rpmという名前のパッケージを持つことは、ランダムなパラメータを渡すよりもはるかに直感的であることを指摘します。

異なるコンテンツをインストールする場合、正確な問題として、に別のパッケージを作成する必要があります。異なったことをしようとすると、あなたはRPMシステムとますます戦うことになります。

ほとんどすべて類似している20以上のパッケージを吐き出すことができるビルドシステムを作成することは難しくありません。私はtemplate-ish specファイルとmakeで実行されるいくつかのスクリプトでそれを行いました。これは、さまざまなspecファイルを作成し、RPMを構築します。具体的なことが分からなければ、20以上の環境パッケージがすべて依存しているコアパッケージであっても、環境固有のパッケージはターゲット環境に特有のものをインストールするように思えます。

+0

返信いただきありがとうございます。私は実際に何かを入力するようにユーザーを促すようなユーザーのやりとりを必要としません。私が探しているのは、installコマンドと共にパラメータを渡す方法です。例:** rpm -i myapp.rpm -dev **適切な値をファイルに設定する方法があります。そのため、rpmインストーラはそれを読み取り、必要な値を取得できます。私はそれよりもエレガントなものを探しています。 –

+1

私はそれをユーザーのやり取りとして数えます。私はあなたが望むものは、あなたのプリインストールスクリプトをインストールすることです。何らかの形で環境を自動的に検出し、ファイルをどこかで調べることができます。また、RPMユーザーの観点から、* -qa.rpmという名前のパッケージを持つことは、いくつかのランダムなパラメータを渡すよりも直感的であることを指摘します。 – kbyrd

+0

私は上記のコメントからの情報を私の答えに加えました。 – kbyrd

3

などの再配置オプションを使用できます。

rpm -i --relocate /env=/uat somepkg.rpm 

と、スクリプトは「ENV」ディレクトリにあるファイルから変数データを調べてい

0

私はあなたがアプリケーション開発に動いているように、この特別次第、非常に有効な質問だと思いますレルム。そこでは、さまざまなターゲットシステム用のアプリケーションの設定はあなたの毎日のパンです:開発、統合テスト、受け入れテスト、生産などのために構成する必要があります。私は確かに各環境のための別々のパッケージを構築することは解決策だとは思わない。基本的には、異なる環境で動作する同じコードでなければなりません。 私はこの要件がrpmでサポートされていないことを知っています。しかし、回避策としては、単純な設定ファイルを使用することができます。%preスクリプトは、探すために を知っています。設定ファイルは、例えば環境変数を設定するシンプルなシェルスクリプトであってもよいし、異なる前後のスクリプトでそれらを使用することもできる。

関連する問題