rpmパッケージをインストール、アンインストール、アップグレードをすると、スクリプトを実行するrpmパッケージがあります。
例えば、PostgerSQLのRPM構築用のspecファイルを見ると、postgresユーザの作成やグループの作成なども行われています。
以下の2つの方法でスクリプトを確認することができます。
rpm -qp --scripts rpmファイル
rpm -q --scripts パッケージ名
Fedoraのミラーから適当なrpmパッケージファイルをダウンロードして確認しました。
Fedora mirrors : http://mirrors.fedoraproject.org/publiclist/Fedora/
以下の実行例の出力を見るとわかりやすいです。
preinstall, postinstall, preuninstall, postuninstall
の動作に対して定義されているスクリプトが表示されます。
スクリプトが存在しない場合は何も表示されません。
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パッケージの実行例です。
$ 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 fipreinstall, postinstall, preuninstallに対してのスクリプトが表示されました。
$ rpm -q --scripts python $何も表示されませんでした。