3

ソフトウェア用の RPM パッケージの作成を開始しましたが、システムを意図したとおりに使用できているか確信が持てません。Fedora、centos、opensuse など、さまざまな RPM システムでビルドできる RPM 仕様/ソース パッケージを作成したいと考えています (これが rpm の好きなところです)。

%preしかし、egやのスクリプトの多くが%postディストリビューションに依存していることに気付き始めています。たとえば、私の pre スクリプトは Apache を停止します。

service httpd stop

ただし、このコマンドは OpenSUSE では機能しません。これはほんの一例です。私のスクリプトには、ディストリビューションによって異なるものが他にもたくさんあります。

では、これについての通常の方法は何ですか?ディストリビューションごとに個別の .spec ファイルを作成する必要がありますか? または、物事を移植可能にするためのトリックはありますか?

4

1 に答える 1

2

次のようなコマンドを実行するシェル スクリプトを spec ファイルの先頭に追加します。

%define distribution %(sh -c "[ -f /etc/redhat-release ] && cat /etc/redhat-release | awk '{print $1}' || [ -f /etc/SuSE-release ] && head -n1 /etc/SuSE-release | awk '{print $1}' || echo 'Unknown'")

%preand etc スクリプトのさらに下で、次の%postことができます。

distribution=${distribution}
case $distribution in
    "Fedora")
        # do fedora stuff
    ;;
    "openSUSE")
        # do suse stuff
    ;;
    *)
        # handle error condition
        exit 1
    ;;
esac

そして、必要な配布文字列とそれに関連するスクリプトを追加します。

于 2013-01-27T00:41:40.143 に答える