1

RPM パッケージをインストール/アップグレードする前に、ターゲット システムで複数の入念な「サニティ」チェックを実行する必要があります。スクリプト (bash/python/php など)に、他のファイルと一緒にインストールされず、事前 (インストール | アップグレード) でのみ使用される他のアクセサリ ファイル ( SQLスクリプトなど) と一緒に手順を含めたいと考えています。

これらのファイルを rpmbuild 用にどこに配置し、%preセクション内およびメイン スクリプト内でそれらのファイル (パスなど) を呼び出す/参照する方法を教えてください。次にインストールされるデータ ファイル (前述のSQLスクリプト)を参照するにはどうすればよいですか?

助けてくれてありがとう。

4

2 に答える 2

3

RPM にはこの機能がありません。私が見たように、あなたには2つの選択肢があります:

  1. ファイルを tar し、テキスト形式 (uuencode など) にエンコードし、%pre でデコードして untar します。醜いですが、可能です。

  2. これらのファイルを提供する別の RPM、たとえば sql-dependencies を用意します。次に、既存の RPM に以下を追加します。

    Requires(pre) : SQL 依存関係。

于 2011-10-19T21:39:09.160 に答える
1

これは、スクリプトを自己解凍アーカイブに入れ、それを rpm スクリプトにすることで可能になります。これはMakeself (ダウンロードへの直接リンク) で可能です。

例の名前としてfootestを使用して、これを実行します。

makeself.sh --base64 /path/to/footest \
    /path/to/rpm/sources/footest.sh "My foo test" ./run.sh

/path/to/footest実行するスクリプトを./run.sh含むディレクトリであり、展開時に実行される footest ディレクトリ内のスクリプトです。

.specファイルにソースとして追加し、footest.shこれをスクリプトとして配置します。

%pre -f footest.sh

スクリプトの rpm をクエリすると、footest.sh実行するテスト スイートの base64 エンコーディングが続く makeself である の内容が表示されます。

注:これを機能させるには、base64 エンコーディングを使用するように makeself にパッチを適用する必要があり (現在のリリースにはこの機能がありません)、rpm はスクリプト内のバイナリ データを好みません:

makeself-2.1.5-base64.patch:

diff -ruNp makeself-2.1.5/makeself.sh makeself-2.1.5-base64/makeself.sh
--- makeself-2.1.5/makeself.sh  2008-01-04 16:53:49.000000000 -0700
+++ makeself-2.1.5-base64/makeself.sh   2012-01-17 06:01:42.000000000 -0700
@@ -91,6 +91,7 @@ MS_Usage()
     echo "    --gzip          : Compress using gzip (default if detected)"
     echo "    --bzip2         : Compress using bzip2 instead of gzip"
     echo "    --compress      : Compress using the UNIX 'compress' command"
+    echo "    --base64        : Instead of compressing, encode the data using base64"
     echo "    --nocomp        : Do not compress the data"
     echo "    --notemp        : The archive will create archive_dir in the"
     echo "                      current directory and uncompress in ./archive_dir"
@@ -150,6 +151,10 @@ do
    COMPRESS=Unix
    shift
    ;;
+    --base64)
+   COMPRESS=base64
+   shift
+   ;;
     --encrypt)
    COMPRESS=gpg
    shift
@@ -278,6 +283,10 @@ bzip2)
     GZIP_CMD="bzip2 -9"
     GUNZIP_CMD="bzip2 -d"
     ;;
+base64)
+    GZIP_CMD="base64"
+    GUNZIP_CMD="base64 -d -i"
+    ;;
 gpg)
     GZIP_CMD="gpg -ac -z9"
     GUNZIP_CMD="gpg -d"
于 2012-01-17T16:21:14.867 に答える