Linux rpm命令

Linux rpm命令:RPM软件包管理器。

Linux rpm命令 功能描述

使用rpm命令可以在Linux系统中安装、删除、刷新、升级、查询RPM软件包。

Linux rpm命令 语法

rpm [选项] [RPM软件包文件名称|RPM软件包名称]

命令中各选项的含义如表所示。
rpm命令选项含义

Linux rpm命令 示例

安装bind-9.8.2-0.17.rc1.el6.x86_64.rpm软件包

[root@rhel ~]# cd /media/RHEL_6.4\ x86_64\ Disc\ 1/Packages
//进入Linux系统安装光盘软件包目录
[root@rhel Packages]# rpm -i bind-9.8.2-0.17.rc1.el6.x86_64.rpm
//在安装软件包时不会输出安装的详细信息

安装bind-9.8.2-0.17.rc1.el6.x86_64.rpm软件包,并显示安装过程中的详细信息和水平进度条

[root@rhel Packages]# rpm -ivh bind-9.8.2-0.17.rc1.el6.x86_64.rpm
Preparing...              ###########################################[100%]
  1:bind                 ###########################################[100%]
//如果软件包安装成功,系统会显示软件包的名称,并且在软件包安装时显示详细信息和水平进度条

只对安装进行测试,并不实际安装bind-9.8.2-0.17.rc1.el6.x86_64.rpm软件包

[root@rhel Packages]# rpm -ivh --test bind-9.8.2-0.17.rc1.el6.x86_64.rpm
warning: bind-9.8.2-0.17.rc1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...               ###########################################[100%]

安装以bind开头的软件包

[root@rhel Packages]# rpm -ivh bind*
//通过这种方式可以一次安装多个软件包

在软件包bind-9.8.2-0.17.rc1.el6.x86_64.rpm已经安装的情况下仍旧安装该软件包

[root@rhel Packages]# rpm -ivh --replacepkgs bind-9.8.2-0.17.rc1.el6.x86_64.rpm
Preparing...               ###########################################[100%]
  1:bind                 ###########################################[100%]

忽略软件包的依赖关系,强行安装bind-chroot-9.8.2-0.17.rc1.el6.x86_64.rpm软件包

[root@rhel Packages]# rpm -ivh --nodeps bind-chroot-9.8.2-0.17.rc1.el6.x86_64.rpm
Preparing...               ###########################################[100%]
  1:bind-chroot             ###########################################[100%]

直接从软件包的HTTP网址安装软件包

[root@rhel ~]# rpm -ivh \
> http://ncu.dl.sourceforge.net/project/webadmin/webmin/1.630/webmin-1.630-1.noarch.rpm

删除bind-chroot软件包

[root@rhel ~]# rpm -e bind-chroot

强制删除bind软件包

[root@rhel ~]# rpm -e --nodeps bind
warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave

升级bind-9.8.2-0.17.rc1.el6.x86_64.rpm软件包

[root@rhel Packages]# rpm -Uvh bind-9.8.2-0.17.rc1.el6.x86_64.rpm

强制升级bind-9.8.2-0.17.rc1.el6.x86_64.rpm软件包

[root@rhel Packages]# rpm -Uvh --oldpackage bind-9.8.2-0.17.rc1.el6.x86_64.rpm

刷新bind-9.8.2-0.17.rc1.el6.x86_64.rpm软件包

[root@rhel Packages]# rpm -Fvh bind-9.8.2-0.17.rc1.el6.x86_64.rpm

初始化RPM数据库

[root@rhel ~]# rpm --initdb

从安装数据包头重建RPM数据库

[root@rhel ~]# rpm --rebuilddb

查询bind和crontabs软件包是否已经安装

[root@rhel ~]# rpm -q bind
package bind is not installed
//查询到bind软件包没有安装[root@rhel ~]# rpm -q crontabs
crontabs-1.10-33.el6.noarch
//查询到crontabs软件包已经安装

查询系统内所有已经安装的RPM软件包

[root@rhel ~]# rpm -qa
xorg-x11-server-Xorg-1.13.0-11.el6.x86_64
perl-Time-HiRes-1.9721-129.el6.x86_64
perl-XML-Dumper-0.81-6.el6.noarch
libreport-2.0.9-15.el6.x86_64
xml-common-0.6.3-32.el6.noarch
xorg-x11-drv-xgi-1.6.0-18.20121114git.el6.x86_64
perl-libxml-perl-0.08-10.el6.noarch
cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64
abrt-tui-2.0.8-15.el6.x86_64
mailcap-2.1.31-2.el6.noarch
xorg-x11-drv-sisusb-0.9.6-2.el6.x86_64
grubby-7.0.15-3.el6.x86_64
attr-2.4.44-7.el6.x86_64
neon-0.29.3-2.el6.x86_64
thai-scalable-fonts-common-0.4.12-2.1.el6.noarch
xorg-x11-drv-penmount-1.5.0-4.el6.x86_64
libcroco-0.6.2-5.el6.x86_64
........................(省略)

查询以cront开头的RPM软件包是否已经安装

[root@rhel ~]# rpm -qa|grep cront
crontabs-1.10-33.el6.noarch
//结合管道方式查询

查询crontabs软件包的描述信息

[root@rhel ~]# rpm -qi crontabs
Name       :crontabs                  Relocations:(not relocatable)
Version    :1.10                          Vendor:Red Hat,Inc.
Release    :33.el6                 Build Date:2011年06月03日星期五22时39分44秒
Install Date:2013年08月18日星期日21时36分08秒     Build Host:s390-001.build.bos.redhat.com
Group      :System Environment/Base      Source RPM:crontabs-1.10-33.el6.src.rpm
Size       :2495             License:Public Domain and GPLv2
Signature   :RSA/8,2011年06月13日星期一19时34分40秒,Key ID 199e2f91fd431d51
Packager   :Red Hat,Inc.<http://bugzilla.redhat.com/bugzilla>
Summary    :Root crontab files used to schedule the execution of programs
Description :
The crontabs package contains root crontab files and directories.
You will need to install cron daemon to run the jobs from the crontabs.
The cron daemon such as cronie or fcron checks the crontab files to
see when particular commands are scheduled to be executed. If commands
are scheduled, it executes them.
Crontabs handles a basic system function, so it should be installed on your system.

查询crontabs软件包所包含的文件列表

[root@rhel ~]# rpm -ql crontabs
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
/etc/crontab
/usr/bin/run-parts
/usr/share/man/man4/crontabs.4.gz

查看crontabs软件包的修改记录

[root@rhel ~]# rpm -q --changelog crontabs
* 五 6月 032011 Marcela Mašláňová <mmaslano@redhat.com> 1.10-33
- add into example in crontab user-name
- change name of crontab to crontab1 to be able add patch into cvs
- Resolves: rhbz#609544
* 一 11月 302009 Dennis Gregorovic <dgregor@redhat.com> -1.10-32.1
- Rebuilt for RHEL 6
* 一 10月 122009 Marcela Mašláňová <mmaslano@redhat.com> 1.10-32
- rebuilt for review
* 五 7月 242009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> -1.10-31
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* 四 6月 182009 Marcela Mašláňová <mmaslano@redhat.com> 1.10-30
-491793 thanks Andrew Hecox for patch which allows set allow/deny jobs
- comment change ''empty crontab''
........................(省略)
//可以发现crontabs软件包经过了很多次的修改

查询crontabs软件包的依赖关系

[root@rhel ~]# rpm -qR crontabs
/bin/bash
/etc/cron.d
config(crontabs) = 1.10-33.el6
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1

查询/etc/crontab文件属于哪个软件包

[root@rhel ~]# rpm -qf /etc/crontab
crontabs-1.10-33.el6.noarch
//当指定文件时,必须指定文件的完整路径(如/etc/crontab)

查询crontabs软件包的配置文件

[root@rhel ~]# rpm -qc crontabs
/etc/crontab

查询crontabs软件包的文档文件

[root@rhel ~]# rpm -qd crontabs
/usr/share/man/man4/crontabs.4.gz

列出crontabs软件包显性提供的内容

[root@rhel ~]# rpm -q --provides crontabs
config(crontabs) = 1.10-33.el6
crontabs = 1.10-33.el6

查询httpd软件包RPM脚本

[root@rhel ~]# rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the ''apache'' user
getent group apache >/dev/null || groupadd -g 48-r apache
getent passwd apache >/dev/null || \
  useradd -r -u 48-g apache -s /sbin/nologin \
    -d /var/www -c ''Apache'' apache
exit 0
postinstall scriptlet (using /bin/sh):
# Register the httpd service
/sbin/chkconfig --add httpd
/sbin/chkconfig --add htcacheclean
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
      /sbin/service httpd stop > /dev/null 2>&1
      /sbin/chkconfig --del httpd
/sbin/service htcacheclean stop > /dev/null 2>&1
      /sbin/chkconfig --del htcacheclean
fi
posttrans scriptlet (using /bin/sh):
test -f /etc/sysconfig/httpd-disable-posttrans || \
 /sbin/service httpd condrestart >/dev/null 2>&1 || :

根据时间戳列出以cron开头的所有软件包

[root@rhel ~]# rpm -qa --last cron*
cronie-1.4.4-7.el6.x86_64                        2013年08月18日星期日21时36分09秒
crontabs-1.10-33.el6.noarch                       2013年08月18日星期日21时36分08秒
cronie-anacron-1.4.4-7.el6.x86_64                  2013年08月18日星期日21时36分08秒
例17.28:验证pam软件包。

[root@rhel ~]# rpm -V pam
....L.... c/etc/pam.d/fingerprint-auth
....L.... c/etc/pam.d/password-auth
....L.... c/etc/pam.d/smartcard-auth
....L.... c/etc/pam.d/system-auth

RPM检验标记如表所示。

RPM检验标记

导入RPM软件包公钥

[root@rhel ~]# cd /media/RHEL_6.4\ x86_64\ Disc\ 1/Packages
//进入Linux系统安装光盘软件包目录
[root@rhel ~]# rpm --import /media/RHEL_6.4\ x86_64\ Disc\ 1/RPM-GPG-KEY-redhat-release

检验bind-9.8.2-0.17.rc1.el6.x86_64.rpm软件包的签名

[root@rhel Packages]# rpm -K bind-9.8.2-0.17.rc1.el6.x86_64.rpm
bind-9.8.2-0.17.rc1.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
//软件包签名检验成功

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程