このエントリーをはてなブックマークに追加


rpmのインストール・アンインストール時に実行されるスクリプトを確認する方法

rpmパッケージをインストール、アンインストール、アップグレードをすると、スクリプトを実行するrpmパッケージがあります。
例えば、PostgerSQLのRPM構築用のspecファイルを見ると、postgresユーザの作成やグループの作成なども行われています。


スクリプト確認コマンド

以下の2つの方法でスクリプトを確認することができます。

  • rpmファイルを指定してスクリプトを確認する
    rpm -qp --scripts rpmファイル
  • 既にインストール済みのrpmパッケージのスクリプトを確認する
    rpm -q --scripts パッケージ名

動作確認

Fedoraのミラーから適当なrpmパッケージファイルをダウンロードして確認しました。
Fedora mirrors : http://mirrors.fedoraproject.org/publiclist/Fedora/

以下の実行例の出力を見るとわかりやすいです。
preinstall, postinstall, preuninstall, postuninstall の動作に対して定義されているスクリプトが表示されます。
スクリプトが存在しない場合は何も表示されません。

rpm -qp --scripts rpmファイル

Fedoraのミラーから postgresql-server-9.0.4-1.fc15.i686.rpm パッケージファイルをダウンロードして確認しました。
Fedora mirrors : http://mirrors.fedoraproject.org/publiclist/Fedora/

以下、コマンドの実行結果です。

$ rpm -qp --scripts postgresql-server-9.0.4-1.fc15.i686.rpm
warning: postgresql-server-9.0.4-1.fc15.i686.rpm: Header V3

RSA/SHA256 signature: NOKEY, key ID 069c8460

preinstall scriptlet (using /bin/sh):
/usr/sbin/groupadd -g 26 -o -r postgres >/dev/null 2>&1 || :
/usr/sbin/useradd -M -N -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
        -c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add postgresql
/sbin/ldconfig
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ] ; then
        /sbin/service postgresql stop >/dev/null 2>&1
        /sbin/chkconfig --del postgresql
fi
postuninstall scriptlet (using /bin/sh):
/sbin/ldconfig
if [ $1 -ge 1 ] ; then
        /sbin/service postgresql condrestart >/dev/null 2>&1 || :
fi

preinstall, postinstall, preuninstall, postuninstallに対応したスクリプトが表示されます。

rpm -q --scripts パッケージ名

以下、インストール済みのrpmパッケージの実行例です。

  • httpd
    $ rpm -q --scripts httpd
    preinstall scriptlet (using /bin/sh):
    # Add the "apache" user
    /usr/sbin/useradd -c "Apache" -u 48 \
            -s /sbin/nologin -r -d /var/www apache 2> /dev/null || :
    postinstall scriptlet (using /bin/sh):
    # Register the httpd service
    /sbin/chkconfig --add httpd
    preuninstall scriptlet (using /bin/sh):
    if [ $1 = 0 ]; then
            /sbin/service httpd stop > /dev/null 2>&1
            /sbin/chkconfig --del httpd
    fi
    preinstall, postinstall, preuninstallに対してのスクリプトが表示されました。
  • python
    $ rpm -q --scripts python
    $
    何も表示されませんでした。

 

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:29:43