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

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

二、安装\卸载软件包

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

使用“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”则无法查询到结果

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

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

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

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

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

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

在Linux系统中,典型的应用程序通常由以下几部分组成:
  • 普通的可执行程序文件,一般保存在“/usr/bin”目录中,普通用户即可执行。
  • 服务器程序、管理程序文件,一般保存在“/usr/sbin”目录中,需要管理员才能执行。
  • 配置文件,一般保存在“/etc”目录中,配置文件较多时会建立相应的子目录。
  • 日志文件,一般保存在“/var/log”目录中。
  • 关于应用程序的参考文档等数据,一般保存在“/usr/share/doc”目录中。
  • 执行文件及配置文件的man手册,一般保存在“/usr/share/man”目录中。
例:查询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文件:

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

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

  1. SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用

    SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用 一.概述 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能 ...

  2. 配分函数|机器学习推导系列(二十六)

    一.概述 对于有向概率图模型来说,由于图中存在天然的拓扑排序关系,所以有向概率图的因式分解的形式很容易写出来.而对于无向图来说就需要根据它图中的最大团来写成一个因式分解的形式,无向图模型在局部并没有表 ...

  3. 敏捷开发一千零一问系列之二十六 如何进行优先级排序

    这是敏捷开发一千零一问系列的第二十六篇.(在这里提问,之一,之二,之三,问题总目录) 问题 如何进行优先级排序?具体故事的优先级,和版本规划的优先级之间有何关系? 分析 敏捷开发里边有很多地方需要多次 ...

  4. RHEL6入门系列之二十七,源码安装及软件安装综合实例

    本篇博文中用到的所有软件和工具都可以从51cto下载,地址:http://down.51cto.com/data/676524 一. 源代码安装软件 1.源代码编译概述 虽然通过RPM软件包大大简化了 ...

  5. [算法系列之二十六]字符串匹配之KMP算法

    一 简介 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的关键是利 ...

  6. 网络安全系列之二十六 EFS加密

    1.1EFS加密原理 EFS是Windows系统中所特有的一个实用功能,对于NTFS分区上的文件和数据,都可以直接使用EFS加密保存,很大程度上提高了数据的安全性. EFS加密基于公钥策略.在使用EF ...

  7. Spring Boot 入门系列(二十八) JPA 的实体映射关系,一对一,一对多,多对多关系映射!...

    前面讲了Spring Boot 使用 JPA,实现JPA 的增.删.改.查的功能,同时也介绍了JPA的一些查询,自定义SQL查询等使用.JPA使用非常简单,功能非常强大的ORM框架,无需任何数据访问层 ...

  8. 死磕数据库系列(二十六):MySQL 高可用之单主、双主模型组复制配置实践

    点关注公众号,回复"1024"获取2TB学习资源! 前面我们学习:MySQL 高可用之组复制(MGR)技术的相关原理知识,今天我将详细的为大家介绍 MySQL 高可用技术组复制的单 ...

  9. MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题

    文章目录 文中涉及源代码请参见,感兴趣的小伙伴可自行订阅下载! 数学建模源码集锦-基于多层编码遗传算法的车间调度算法应用实例 1. 关于遗传算法的一个小故事 2. 遗传算法操作流程 3. 车间调度问题 ...

最新文章

  1. 取得Repeater内部控件命令名与命令参数
  2. 单播、多播和广播详解
  3. 编译原理 - 实验三 - 递归下降语法分析器的调试及扩展
  4. 2017你该买房,还是卖房?
  5. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用37
  6. 代码管理 防止员工_低代码开发现形记
  7. QT的QSoundEffect类的使用
  8. 为什么要使用Entity Framework
  9. Qt汉字显示乱码的一个简单解决方案
  10. BC26连接阿里云,MQTT协议,AT流程和STM32代码实现
  11. 小手拍拍机器人_手指谣
  12. 工业相机快门类型:卷帘快门和全局快门——哪个最好?
  13. 台式计算机网络共享,笔记本(通过网线)共享给台式机上网
  14. C++:友元函数访问私有函数
  15. 全班抽签java程序
  16. c语言中数组名和数组名取地址理解
  17. 一加3 android 8.0,OnePlus 3公测版固件完整rom包Android 8.0第15版
  18. 分享:电脑虚拟内存到底能不能关掉
  19. 帝国cms安装到linux系统,帝国CMS安装方法(适用于 帝国CMS 7.5 )【图文】
  20. ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来

热门文章

  1. mapperscan注解_SpringBoot 遗忘后的简单快速回忆之环境搭建与常见注解
  2. undertale人物_传说之下所有人物的照片
  3. mysql快速删除大表数据部分数据_mysql删除大表的部分数据
  4. 画米老鼠_蔡康永都在买的画你也买得起,村上隆作品收藏大全
  5. 为什么有时优盘是只读模式_JS专题之严格模式
  6. javascript中Date对象及方法
  7. 2021年京东小魔方年中新品消费趋势报告
  8. 2020年度电竞营销行业报告
  9. SaaS的行业概述及发展现状
  10. 中国共享经济发展报告