
RPMのインストール時にホストがUATかPRODかを確認したいと思います。一度知ったら、RPMのどこでも使用できる変数(%user、%groupなど)を設定できます(アプリは別のUnixを使用します)。 PRODとUATの場合はuser:group)現在、%preセクションと%postセクションの両方でホストがPRODかUATかを知る必要がある場合は、変数の範囲のために各セクションでこれを確認する必要があります。つまり、%userの場合は%preで定義されているため、%postでは使用できません。
ホストが PROD か UAT かを確認する方法は、ホスト名の単純な正規表現です。
%globalマクロを見ましたが、問題が発生しているので、より多くの聴衆に質問をします。
事前にありがとう
答え1
SPECファイルのマクロはrpmbuild中に設定されます。つまり、rpmパッケージの作成中に拡張され、後で(インストール中など)変更することはできません。
ディスクの一部のコンテンツに基づいてSPECファイルにマクロを設定すると、RPMパッケージを作成したホストのファイルコンテンツに基づいて設定されます。
インストール中に動作を変更するには、各セクションでやり直す必要があります。
%pre
if [ `hostname` -eq 'foo' ]; then
.....
%post
if [ `hostname` -eq 'foo' ]; then
.....
このセクションは2つの別々のシェルスクリプトとして解釈され、2つの実行の間に変数を保持する方法はありません。つまり、最初のスクリプトレットでシェル変数を設定すると、2番目のスクリプトレットに伝播しないことをお勧めします。 2番目のスクリプトレットから読み取られるファイル。https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_saving_state_between_scriptlets
答え2
事後マクロと辞書マクロに単一のグローバルスコープがあるとは思わないでください。結局のところ、これらは実際に別々に実行される独立したスクリプトです。