rpm:一个被低估的工具

在刚开始使用Linux系统的时候,总喜欢把Linux系统和Windows系统去做对比,然后就感觉Linux系统各种不好用,例如:

  1. 没有图形界面。虽然也可以安装Xwindow套件,实现类似Windows的图形界面,但还是各种不适应。最重要的是,作为服务器系统使用的Linux,绝大部分都是不安装Xwindows套件的。
  2. 面对一个黑漆漆的命令行,我怎么知道有哪些软件可用呢?Windows系统起码有个控制面板,装了什么软件一目了然。
  3. Windows里的常用软件我们都很熟悉是干什么用的,但是Linux里的软件我以前都没见过,我怎么知道它是干什么的,什么时候安装的,来自哪个软件包呢?
  4. 我下载了一个软件,在安装之前怎么知道它的一些信息呢?

以上这些疑问都可以在rpm命令中找到答案。

简介

rpm,即:Radhet Package Manager,红帽软件包管理器。最早是为红帽操作系统开发的软件包管理程序,利用这个工具简化了之前的源码包安装过程,实现了软件包管理的标准化,让redhat系统的软件包管理更加容易,降低了系统管理门槛。现在这个工具已经扩展到所有Radhet系列的Linux系统中使用。
这里简单回顾一下源码包安装的过程。
由于Linux系统的开源基因,以及Linux系统分支的多样性,早前的Linux系统软件发布都是直接发布源码,即:把源代码直接打包,发布到网上或者发给有需要的人。
安装软件的时候,需要根据自己使用的系统,设置个性化的参数,先进行编译,编译完成后再安装。
源码包的方式,优点是:

  1. 软件发布者省事,不需要自己编译和封装;
  2. 软件兼容性好,由于是在要使用该软件的系统上编译的,可以更好的适应当前操作系统。
  3. 可定制性高,同样是因为自己编译,可以在软件允许的范围内,最大限度的满足自己的需要。

相对的,以上这些优点就是rpm包管理的缺点了。但是瑕不掩瑜,rpm的功能还是很强大的。

应用场景一:看看有哪些可用的软件

#列出系统中已安装的所有软件
rpm -qa |less	#由于一般系统中的软件会有很多,所以接less命令,方便查阅逐行查阅。
……
kernel-tools-3.10.0-957.el7.x86_64
keyutils-libs-1.5.8-3.el7.x86_64
btrfs-progs-4.9.1-1.el7.x86_64
p11-kit-trust-0.23.5-3.el7.x86_64
rootfiles-8.1-11.el7.noarch
iwl5000-firmware-8.83.5.1_1-69.el7.noarch
libblkid-2.23.2-59.el7.x86_64
:

参数解析:
-q #查询模式;
-a #查询所有软件;

应用场景二:查看软件的基本信息

[root@lnmp1 ~]# rpm -qi yum	#查询yum软件的基本信息。
Name        : yum
Version     : 3.4.3		#软件版本
Release     : 161.el7.centos	#软件发行版本
Architecture: noarch
Install Date: 2019年11月13日 星期三 18时17分11秒	#安装日期
Group       : System Environment/Base
Size        : 5824869
License     : GPLv2+
Signature   : RSA/SHA256, 2018年11月12日 星期一 23时27分16秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : yum-3.4.3-161.el7.centos.src.rpm	#所属软件包
Build Date  : 2018年11月05日 星期一 09时54分01秒	#软件打包日期
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://yum.baseurl.org/
Summary     : RPM package installer/updater/manager	#软件简介
Description :			#以下是关于软件的说明。
Yum is a utility that can check for and automatically download and
install updated RPM packages. Dependencies are obtained and downloaded
automatically, prompting the user for permission as necessary.

参数解析:
-i #显示软件相关信息;

应用场景三:查看软件在安装时都安装了哪些文件

[root@lnmp1 ~]# rpm -ql yum	
/etc/logrotate.d/yum
/etc/yum
/etc/yum.conf
/etc/yum.repos.d
/etc/yum/fssnap.d
/etc/yum/pluginconf.d
/etc/yum/protected.d
/etc/yum/vars
/etc/yum/version-groups.conf
/usr/bin/yum
/usr/lib/python2.7/site-packages/rpmUtils
/usr/lib/python2.7/site-packages/rpmUtils/__init__.py
/usr/lib/python2.7/site-packages/rpmUtils/__init__.pyc
/usr/lib/python2.7/site-packages/rpmUtils/arch.py
/usr/lib/python2.7/site-packages/rpmUtils/arch.pyc
/usr/lib/python2.7/site-packages/rpmUtils/miscutils.py
/usr/lib/python2.7/site-packages/rpmUtils/miscutils.pyc
/usr/lib/python2.7/site-packages/rpmUtils/oldUtils.py
/usr/lib/python2.7/site-packages/rpmUtils/oldUtils.pyc
/usr/lib/python2.7/site-packages/rpmUtils/transaction.py
/usr/lib/python2.7/site-packages/rpmUtils/transaction.pyc
/usr/lib/python2.7/site-packages/rpmUtils/updates.py
/usr/lib/python2.7/site-packages/rpmUtils/updates.pyc
……

参数解析:
-l #显示和软件相关的文件列表;
以上只是yum软件安装时生成的部分文件列表,可以看出不止列出了文件,还给出了文件所在路径,还是很贴心的。

应用场景四:查看某个文件属于哪个软件

[root@lnmp1 ~]# rpm -qf /etc/passwd
setup-2.8.71-10.el7.noarch

参数解析:
-f #显示指定文件所属的软件;

应用场景五:安装前查看,将要安装的是个什么软件

[root@lnmp1 ~]# rpm -qpi apr-1.4.8-5.el7.x86_64.rpm 
Name        : apr
Version     : 1.4.8
Release     : 5.el7
Architecture: x86_64
Install Date: (not installed)			#没有安装,所以没有安装日期
Group       : System Environment/Libraries
Size        : 226790
License     : ASL 2.0 and BSD with advertising and ISC and BSD
Signature   : RSA/SHA256, 2019年08月23日 星期五 05时20分27秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : apr-1.4.8-5.el7.src.rpm
Build Date  : 2019年08月08日 星期四 20时04分16秒
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem 
Vendor      : CentOS
URL         : http://apr.apache.org/
Summary     : Apache Portable Runtime library
Description :
The mission of the Apache Portable Runtime (APR) is to provide a
free library of C data structures and routines, forming a system
portability layer to as many operating systems as possible,
including Unices, MS Win32, BeOS and OS/2.

参数解析:
-p #显示指定软件包的信息;
和查询已安装的软件的信息差不多,没有已安装日期。

应用场景六:安装前查看,将要安装的软件会产生哪些文件

和查询已安装的软件产生的文件类似。

[root@lnmp1 ~]# rpm -qpl apr-1.4.8-5.el7.x86_64.rpm 
/usr/lib64/libapr-1.so.0
/usr/lib64/libapr-1.so.0.4.8
/usr/share/doc/apr-1.4.8
/usr/share/doc/apr-1.4.8/CHANGES
/usr/share/doc/apr-1.4.8/LICENSE
/usr/share/doc/apr-1.4.8/NOTICE

应用场景七:安装rpm软件包

[root@lnmp1 Packages]# rpm -ivh tcpdump-4.9.2-4.el7_7.1.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:tcpdump-14:4.9.2-4.el7_7.1       ################################# [100%]

参数解析:
-i #安装软件包;
-v #显示命令执行过程;
-h #和-v参数一起使用,显示进度条;

应用场景八:卸载rpm软件包

[root@lnmp1 Packages]# rpm -e tcpdump 
[root@lnmp1 Packages]# 

参数解析:
-e #卸载指定软件。
卸载的时候不需要指定版本。

应用场景九:检测rpm软件包是否被篡改

[root@lnmp1 Packages]# rpm -V httpd
S.5....T.  c /etc/httpd/conf/httpd.conf
.....UG..    /var/www/html

这里的参数:-V(大写) 是验证完整性。即验证当前的文件状态和安装时是否一致。
如果一致,则没有任何输出;
如果不一致,则输出指定标志,如上。
具体这些标志的含义,可以再开一篇单独讲讲了。这里不再展开。


通过以上的九个场景,可以看到rpm是真的不简单,可以在你遨游Linux世界时,助你一臂之力!

你可能感兴趣的:(Linux,linux,运维,centos)