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