查看RPM文件中的安装/卸载脚本

时间:2020-01-09 10:43:26  来源:igfitidea点击:

问题描述:如何在Red Hat Enterprise Linux/RHEL/CentOS/Fedora/Suse Linux下的名为foo.rpm的RPM文件中查看安装前或者安装后脚本?
如何列出在安装和卸载过程中使用的特定于软件包的脚本?

解决方法:要列出在安装和卸载过程中使用的特定于软件包的脚本,请将scripts选项传递给rpm命令。
您还需要指定以下选项:

-q选项:查询选项-p选项:查询(未安装)软件包PACKAGE_FILE。
可以将PACKAGE_FILE指定为ftp或者http样式的URL,在这种情况下,将下载并查询包头。

卸载的foo.rpm文件的常规语法

$ rpm -qp --scripts foo.rpm

在名为monit-4.9-2.el5.rf.x86_64.rpm的rpm文件中查找安装/卸载脚本:

$ rpm -qp --scripts monit-4.9-2.el5.rf.x86_64.rpm

输出示例:

warning: monit-4.9-2.el5.rf.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
preinstall scriptlet (using /bin/sh):
if ! /usr/bin/id monit &>/dev/null; then
        /usr/sbin/useradd -M -r -d /var/lib/monit -s /bin/sh -c "monit daemon" monit || \
                logger -t monit/rpm "Unexpected error adding user \"monit\". Aborting installation."
fi
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add monit
preuninstall scriptlet (using /bin/sh):
if [  -eq 0 ]; then
        service monit stop &>/dev/null || :
        /sbin/chkconfig --del monit
fi
postuninstall scriptlet (using /bin/sh):
/sbin/service monit condrestart &>/dev/null || :
if [  -eq 0 ]; then
        /usr/sbin/userdel monit || logger -t monit/rpm "User \"monit\" could not be deleted."
fi

已安装的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 [  = 0 ]; then
        /sbin/service httpd stop > /dev/null 2>&1
        /sbin/chkconfig --del httpd
fi