今天学习Linux中RPM包的安装升级和查询命令。

先介绍一下Linux中常见的两类包

源代码包二进制包
直接发源代码过来,需要编译后才能运行RPM包,是系统编译过的文件
可以自由选择所需功能,软件是编译安装,更加稳定,效率更高,卸载方便。包管理系统简单,安装速度比源码包快
安装步骤较多,编译过程时间较长,由于编译安装,一旦报错新手很难解决看不到源代码,功能选择不如源码包灵活,依赖性

这里重点先说说二进制包,也就是RPM包的依赖性,依赖性分为三种

  • 树形依赖:a -> b -> c,先安装a,在安装b,最后安装c,卸载则顺序相反
  • 环形依赖:a -> b -> c -> a,安装的时候要将文件包一次性安装
  • 模块依赖:有时候要依赖不是系统包,而是某个软件下的某个包,解决的方法可以通过模块依赖查询网站:www.rpmfind.net

再说一下包全名和包名的区别。

举个栗子:httpd-2.2.15-15.el6.centos.1.i686.rpm

  • 例子中为包全名,操作的包是没有安装的软件包时,使用包全民,而且注意路径。
  • 而httpd为包名,操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库,因此不用包全名。
httpd软件包名
2.2.15软件版本
15软件发布次数
el6.centos适合的Linux平台
i686适合的硬件平台
rpmrpm包扩展名

以上介绍了RPM包的一些基本知识,现在来介绍一下RPM的基本命令,这里再说明要注意包名和包全名!

命令功能
rpm -i 包全名安装RPM包
rpm -v 包全名安装中显示详细信息
rpm -h 包全名显示进度
rpm --nodeps 包全名不检测依赖性,这一条命令谨慎使用
rpm -U 包全名升级upgrade,注意是大写U
rpm -e 包名卸载,由于在数据库中查询,因此不需要包全名
rpm -q 包名查询某包是否已安装
rpm -qa查询所有安装包,all
rpm -qi 包名查询已安装包的包名,版本等相关信息
rpm -qp 包全名查询未安装包信息
rpm -ql 包名查询包的所在路径
rpm -qlp 包全名查询未安装包打算要安装的路径
rpm -qf 系统文件名查询系统文件属于那个软件包,系统文件名就是该文件所在绝对路径
rpm -qR 包名查询软件包的依赖性
rpm -qRp 包全名查询未安装包的依赖性

这里说一个很重要的概念,管道符 |:用来连接多条命令。再说一个搜索中非常常见的命令:grep,全局正则表达式,能使用正则表达式搜索文本,并把匹 配的行打印出来。

举个例子:rpm -qa | grep httpd,这个命令是查询httpd包是否安装

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐