文章目录
软件包分类
在 Linux 下,软件包可以分为两类:
- 源码包:顾名思义,就是把源代码直接给你
- 二进制包:又称 RPM 包,也称系统默认包,与源码包不同,二进制包是经过编译的,可以加快安装速度,简化安装操作
RPM 包的两种管理方式
RPM 包有两种管理方式,分别是:rpm 命令管理和 yum 在线管理,它们之间的主要区别为 rpm 命令一般是手动安装查询卸载,而 yum 会自动进行在线安装。
在本讲,我们会重点介绍 rpm 命令管理。
RPM 包命名原则
下面是一个 RPM 包,第一眼望去,是不是觉得很包名很长,看不懂呢?其实,RPM 包名不是随便取的,它是有命名原则的。
RPM 包的命名原则如下:
- httpd:软件包名
- 2.2.15:软件版本
- 15:软件发布的次数
- el6.centos:适合的 Linux 平台
- i686:适合的硬件平台
- rpm:RPM 包扩展名
注意,RPM 包的包名和包全名是两个不同的概念,在上面的例子中,包名指的是软件包名 httpd,而包全名指的是 httpd-2.2.15-15.el6.centos.1.i686.rpm。
RPM 包依赖性
在 Linux 中,RPM 包之间的依赖关系一般可以分为以下三类:
- 树形依赖:即 A-B-C-D,要安装 A 必须先安装 B,而要安装 B 又必须安装 C…解决方案为从后往前安装,即先安装 D,再安装 C,然后安装 B,最后安装 A
- 环形依赖:即 A-B-C-D-A,各个软件安装的依赖关系构成一个环,解决方案为用一条命令同时安装所有软件包
- 模型依赖:软件包的安装需要借助其他软件包的某些文件(比如库文件),解决方案为通过特定网站找到包含此文件的软件包并直接安装
包全名和包名
前面我们已经简单介绍了包全名和包名的概念,那么,我们应该什么时候使用包全名,什么时候使用包名呢?
- 包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径
- 包名:操作已经安装的软件包时,使用包名
RPM 包的安装,升级与卸载
RPM 包安装
RPM 安装命令为 rpm,命令格式为:
rpm -ivh 包全名
选项含义如下:
- -i:安装
- -v:显示详细信息
- -h:显示进度
RPM 包升级
RPM 包升级命令为:
rpm -Uvh 包全名
其中,-U 选项表示升级。
RPM 包卸载
RPM 包卸载命令为:
rpm -e 包名
其中,选项 -e 表示卸载。
RPM 包的查询
查询是否安装
rpm -q 包名
选项 -q 表示查询。
如果你想查看所有已经安装的 RPM 包,可以使用以下命令:
rpm -qa
-a 选项表示所有。
示例如下:
查询软件包详细信息
rpm -qi 包名
其中,-i 选项表示查询软件信息。另外,如果我们想查询未安装包信息,可以使用 -p 选项。
例如,我们想查询 filesystem 软件包的详细信息,命令可以这么写:
查询包中文件安装位置
rpm -ql 包名
选项 -l 表示列表。另外,如果我们想查询未安装包信息,可以使用 -p 选项。
查询系统文件属于哪个 RPM 包
rpm -qf 系统文件名
-f 选项表示查询系统文件属于哪个软件包。
查询软件包的依赖性
rpm -qR 包名
-R 选项表示查询软件包的依赖性。另外,如果我们想查询未安装包信息,可以使用 -p 选项。
RPM 包的校验和文件提取
RPM 包的校验
rpm -V 已安装的包名
-V 选项表示校验指定 RPM 包中的文件。
该命令可以检验 RPM 包中的文件信息是否被修改。
RPM 包的文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
该命令一般用于误操作导致删除了一些文件之后的修复工作。