rpm 常用命令

一、rpm命令

RPM是“Redhat Package
Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM是以一种数据库记录的方式来将你所需要的套件安装到你的Linux主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。

RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如:

安装的环境必须与编译时的环境一致或者相当;
包与包之间存在着相互依赖的情况;
卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。

命令格式

rpm [参数] 包全名

1、安装包

-i :安装的意思
-v :可视化
-h :显示安装进度

另外在安装一个rpm包时常用的附带参数有:

–force 强制安装,即使覆盖属于其他包的文件也要安装
–nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包.

2、升级包

rpm -Uvh 包全名

-U 升级

3、卸载包

建议使用以下卸载方法:

rpm -e  包全名 --nodeps    #不检查依赖,直接删除rpm包

4、查询一个包是否安装

rpm -q  包名

5、列出该包中有哪些文件

rpm -ql 包全名

6、列出一个未被安装进系统的RPM包文件中包含有哪些文件?

rpm -qilp 包全名

7、列出服务器上的一个文件属于哪一个RPM包

rpm -qf  文件

8、解压RPM包

有时我们需要RPM包中的某个文件,如何解压RPM包呢?RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:

rpm2cpio xxx.rpm | cpio -div

二、常用实例

rpm -qa #查询当前安装的所有rpm包

[root@localhost ~]# rpm -qa
man-db-2.6.3-11.el7.x86_64
alsa-lib-1.1.8-1.el7.x86_64
iwl6000g2b-firmware-17.168.5.2-72.el7.noarch
iwl5150-firmware-8.24.2.2-72.el7.noarch
iwl1000-firmware-39.31.5.1-72.el7.noarch
iwl6050-firmware-41.28.5.1-72.el7.noarch
perl-parent-0.225-244.el7.noarch
perl-Pod-Escapes-1.04-294.el7_6.noarch
perl-libs-5.16.3-294.el7_6.x86_64
gawk-4.0.2-4.el7_3.1.x86_64
perl-constant-1.27-2.el7.noarch
which-2.20-7.el7.x86_64
perl-PathTools-3.40-5.el7.x86_64
perl-threads-shared-1.43-6.el7.x86_64
libnl3-3.2.28-4.el7.x86_64
perl-Pod-Simple-3.28-4.el7.noarch
lua-5.1.4-15.el7.x86_64
vim-filesystem-7.4.629-6.el7.x86_64
...

太多了就不显示全部了

1、rpm -qa|grep openssh #查询当前系统中和openssh相关的包

[root@localhost ~]# rpm -qa|grep openssh
openssh-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64

2、rpm -ql 包全名 #查询httpd安装路径

[root@localhost ~]# rpm -ql openssh-server-7.4p1-21.el7.x86_64
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/lib/systemd/system/sshd-keygen.service
/usr/lib/systemd/system/sshd.service
/usr/lib/systemd/system/sshd.socket
/usr/lib/systemd/system/sshd@.service
/usr/lib64/fipscheck/sshd.hmac
/usr/libexec/openssh/sftp-server
/usr/sbin/sshd
/usr/sbin/sshd-keygen
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd

3、查询文件属于哪个rpm包

ifconfig这个文件为例:

[root@qdlinux Packages]# which ifconfig
/usr/sbin/ifconfig
[root@qdlinux Packages]# rpm -qf /usr/sbin/ifconfig 
net-tools-2.0-0.22.20131004git.el7.x86_64