查看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