且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

RHEL6入门系列之二十六,利用rpm进行软件包管理

更新时间:2022-09-08 20:09:55

在上篇博文中介绍的yum是目前在RHEL系统中安装软件的首选方式,传统的rpm则主要是用作查询,如查询系统中是否已经安装了某个软件等。今天我们就一起来了解一下rpm的一些常用用法。

一、rpm软件包
 
RPM软件包是将程序源代码经过编译和封装以后形成的包文件,在软件包里会封装软件的程序、配置文件、帮助手册等组件。
使用RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用“软件名-软件版本-发布号.硬件平台类型.rpm”的文件名形式。

RHEL6入门系列之二十六,利用rpm进行软件包管理

如上图中的“vsftpd-2.2.2-11.el6.x86_64.rpm”软件包,软件名称是“vsftpd”,版本号是“2.2.2”,发布号是“11.el6”(更新发布号主要是对软件存在的bug或漏洞进行了修补,在软件功能上则并没有增强,el6是指在rhel6系统中发布),硬件平台是“x86_64”(“x86_64”是指64位的PC架构,另外还有“i386”或“i686”等都是指32位的PC架构,noarch是指不区分硬件架构)。

RHEL6系统中所有的内置软件全都是以RPM软件包的形式存储在系统光盘中。将RHEL6的系统光盘挂载到/mnt/cdrom,进入挂载目录,在Packages子目录中存放了所有的rpm软件包。

RHEL6入门系列之二十六,利用rpm进行软件包管理

二、安装\卸载软件包

利用rpm命令安装软件首先必须进入存放rpm软件包的目录,安装软件包所使用的命令是“rpm –ivh”。
选项的含义:
-i   安装软件包
-v   显示安装过程
-h   显示安装进度,rpm每执行了2%就会显示一个#号。
如,利用rpm安装vsftpd程序(在输入软件包名字时可以用Tab键补全)。

RHEL6入门系列之二十六,利用rpm进行软件包管理

使用“rpm –e”命令可以删除一个已经安装过的软件,如将刚才安装的vsftpd删除:[root@localhost ~]# rpm -e vsftpd

三、查询软件包
 
rpm命令现在主要用来进行软件查询,用到的相关选项是“-q”(query,查询)。
 
1、“rpm –q”,查询是否安装了某个软件
例:查询系统中是否已经安装了httpd和vsftpd软件。
[root@localhost ~]# rpm -q httpd
httpd-2.2.15-15.el6_2.1.x86_64            ‘表明已经安装
[root@localhost ~]# rpm -q vsftpd
package vsftpd is not installed                ‘表明尚未安装
在用“rpm –q”命令查询时必须指定软件的完整名字,否则将无法查询出正确结果。
如查询系统中是否安装了逻辑卷lvm的图形化管理工具,输入软件的完整名字“system-config-lvm”可以正确查询,只输入“lvm”则无法查询到结果

RHEL6入门系列之二十六,利用rpm进行软件包管理

2、“rpm –qa”,查询系统中已经安装的所有rpm软件包

例:统计系统中已经安装的rpm软件包的个数。
[root@localhost ~]# rpm -qa | wc -l
1147
如果只能记住软件的部分名称,就可以使用“rpm –qa”结合管道符和grep命令来进行查找。
例:查找系统中已经安装的所有跟“lvm”有关的软件包。

RHEL6入门系列之二十六,利用rpm进行软件包管理

3、“rpm –qi”,查看某个已经安装的软件包的详细信息。

例:查看httpd软件的详细信息。

RHEL6入门系列之二十六,利用rpm进行软件包管理

4、“rpm –ql”,查看某个软件包将会安装哪些程序文件,并把文件安装到系统的哪个位置。

Linux中安装软件不像Windows那样可以由用户指定软件安装目录,由于Linux默认的目录结构是固定的,每个默认目录都有专门的分工,所以在Linux中安装软件时,会自动分门别类地向相应的目录中复制对应的程序文件,并进行相关设置。

Linux系统中,典型的应用程序通常由以下几部分组成:
  • 普通的可执行程序文件,一般保存在“/usr/bin”目录中,普通用户即可执行。
  • 服务器程序、管理程序文件,一般保存在“/usr/sbin”目录中,需要管理员才能执行。
  • 配置文件,一般保存在“/etc”目录中,配置文件较多时会建立相应的子目录。
  • 日志文件,一般保存在“/var/log”目录中。
  • 关于应用程序的参考文档等数据,一般保存在“/usr/share/doc”目录中。
  • 执行文件及配置文件的man手册,一般保存在“/usr/share/man”目录中。
RHEL6入门系列之二十六,利用rpm进行软件包管理
例:查询httpd软件在系统的什么位置安装了文件。
[root@localhost ~]# rpm -ql httpd | more
 
5、“rpm -qf”命令,查询系统中的某个文件是由哪个软件包提供的
 
当系统中的某个程序文件损坏或丢失时,通过“rpm -qf”的查询结果,可以重新安装相应的软件包。
下面以一个实例来进行说明。我们首先将mkdir命令对应的程序文件删除,这样就无法正常执行mkdir命令。然后通过“rpm -qf”命令查询出mkdir程序文件对应的软件包,重新安装相应的软件包,生成mkdir程序文件。
首先用which命令查找mkdir命令对应的程序文件:
[root@localhost ~]# which mkdir
/bin/mkdir
查询提供/bin/mkdir文件的软件包:
[root@localhost ~]# rpm -qf /bin/mkdir
coreutils-8.4-19.el6.x86_64
将程序文件删除,mkdir命令无法执行:
[root@localhost ~]# rm -f /bin/mkdir
[root@localhost ~]# mkdir test
-bash: mkdir: command not found
安装coreutils软件包,重新生成/bin/mkdir文件:

RHEL6入门系列之二十六,利用rpm进行软件包管理

注意,在执行“rpm -ivh”命令安装coreutils软件包时,系统提示coreutils已经安装了,所以此时需要加上“—force”选项强制将软件重新安装一遍。
coreutils软件包装完之后,会重新生成程序文件“/bin/mkdir”,mkdir命令就可以正常使用了。


本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1128166