エラー:マクロ%に無効な名前があります(%define)。

エラー:マクロ%に無効な名前があります(%define)。

私のパッケージをビルドするビルドサポートスクリプトがあります。さて、仕様ファイルにバージョンを自動的に設定したいと思います。私は%{auto_version}これにマクロを使います。rpmbuild -D 'auto_version 1.1' packet.specたとえば、私のスクリプトから電話をかけたいと思います。

#!/bin/bash
version=$(version.sh)
#snip
define="'auto_version ${version}'"

build_spec () {
    spec=$1
    define=$2
    #snip
    build_output=$(rpmbuild -D "$define" $spec)
    # snip
}

build_spec $build_spec "$define"

ただし、これを行うとエラーが発生します。error: Macro % has illegal name (%define)

私は別のエスケープ、引用符、define配列の作成を試みました${define[@]}

答え1

@tripleeeが正しく指摘したように、その理由はerror: Macro % has illegal name (%define)ディレクティブに追加の引用符があるためです。たとえば、次のようになります。-D|--define

-D "\"_gpg_name $gpgname\""

正しいバージョンは次のとおりです。

-D "_gpg_name $gpgname"

関連情報