23

rpmを使用してデプロイしたいアプリケーションがいくつかあります。アプリケーションデプロイメント内の一部のファイルは、他のデプロイされたパッケージのファイルをオーバーライドします。デプロイメントパッケージに新しいファイルを含めるだけで、rpmの競合が発生します。

rpmを使用して、すでにインストールされているファイルを更新/置換する適切な方法を探しています。

私はすでにいくつかの解決策を考え出しましたが、何も正しくないようです。

  • 元のファイルを含むrpmのカスタムバージョンを維持します。

これは、他の可能な解決策のいくつかよりもハックのようには感じられませんが、比較的小さな報酬のために大量の作業のように見えます。

  • 別の名前でrpmにファイルを含め、投稿セクションにコピーします。

これは機能しますが、ファイルの複数のコピーをシステムに散らかすことを意味します。また、各ファイルのrpmビルド仕様の追加メンテナンスを意味します。

  • 投稿セクションでwgetを使用して、既知のサーバーの元のファイルを置き換えます。

これはコピー手法に似ていますが、ファイルはrpmでさえ生きていません。ただし、これは優れた中央構成機関のように機能する可能性があります。

  • ファイルを新しいファイルとしてデプロイしてから、シンボリックリンクを使用して元のファイルを上書きします。

これもコピー手法に似ていますが、煩雑さが少なくなります。ここでの問題は、一部のファイルがシンボリックリンクとして適切に動作しないことです。

4

3 に答える 3

4

を実行することもできrpm -U --replacefiles --replacepkgs ...ます。これにより、必要なものが得られます。

于 2015-04-21T18:39:03.007 に答える
3

RPM %files ディレクティブの詳細については、こちらを参照してください。

http://www.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html

RPM スクリプトレットの %post セクションと %pre セクションの引数を使用して、パッケージをインストール、アップグレード、または削除しているかどうかを判断できます。

$1 が 0 の場合 - 古いものを削除しています。インストールされている 0 個のパッケージをターゲットにしています。$1 が 1 の場合 - 新しいものをインストールしています。合計 1 パッケージのインストールを対象としています。$1 が 2 以上の場合 - このパッケージをアップグレードしており、$1 は既にインストールされているパッケージの数を表します。

これらのセクションは、バージョン間でファイルを管理するのに役立ちます。バージョン間で何をしているかを追跡し、1 つまたは 2 つのバージョンをスキップした場合にどうなるかを検討してください。

これらのことを考慮してください。

于 2013-09-11T17:05:04.160 に答える