课程名称:Linux软件安装管理
章节名称:第3章 rpm命令管理
讲师名称:Tony
课程内容
- 软件包简介
- RPM命令管理
- yum在线安装
- 源码包安装软件
课程收获
软件包简介
Linux下的软件包可细分为两种,分别是源码包和二进制包。
源码包
源码包:实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。
我们都知道,计算机只能识别机器语言,也就是二进制语言,所以源码包的安装需要一名“翻译官”将“abcd”翻译成二进制语言,这名“翻译官”通常被称为编译器。
“编译”指的是从源代码到直接被计算机(或虚拟机)执行的目标代码的翻译过程,编译器的功能就是把源代码翻译为二进制代码,让计算机识别并运行。
由于源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。
二进制包
二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小。
二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包。目前主要有以下 2 大主流的二进制包管理系统:
- RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
- DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。
使用源码包安装软件具有以下几点好处:
- 开源。如果你有足够的能力,则可以修改源代码。
- 可以自由选择所需的功能。
- 因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
- 卸载方便。
但同时,使用源码包安装软件也有几点不足:
- 安装过程步骤较多,尤其是在安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误。
- 编译时间较长,所以安装时间比二进制安装要长。
- 因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决。
使用 RMP 包安装软件具有以下 2 点好处:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、査询和卸载。
- 安装速度比源码包安装快得多。
与此同时,使用 RMP 包安装软件有如下不足:
- 经过编译,不能在看到源代码。
- 功能选择不如源码包灵活。
- 依赖性。有时我们会发现,在安装软件包 a 时需要先安装 b 和 c,而在安装 b 时需要先安装 d 和 e。这就需要先安装 d 和 e,再安装 b 和 c,最后才能安装 a。
RPM包统一命名规则
RPM 二进制包命名的一般格式如下:
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
RPM命令管理
RPM包默认安装路径
通常情况下,RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散如下目录:
安装路径 | 含 义 |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
RPM 包的安装
安装 RPM 的命令格式为:
rpm -ivh 包全名
RPM包的升级
#如果该软件没安装过则直接安装;若没安装则升级至最新版本。
rpm -Uvh 包全名
#如果该软件没有安装,则不会安装,必须安装有较低版本才能升级。
rpm -Fvh 包全名
RPM包的卸载
RPM 软件包的卸载要考虑包之间的依赖性。软件包卸载和拆除大楼是一样的,本来先盖的 2 楼,后盖的 3 楼,那么拆楼时一定要先拆除 3 楼。
rpm -e 包名
其他命令
#查询软件包是否安装
rpm -q 包名
#查询系统中所有安装的软件包
rpm -qa 包名
#查询软件包的详细信息
rpm -qi 包名
#命令查询软件包的文件列表
rpm -ql 包名
#命令查询系统文件属于哪个RPM包
rpm -qf 系统文件名
#查询软件包的依赖关系
rpm -qR 包名
yum 在线安装
yum 是一个专门为了解决包的依赖关系而存在的软件包管理器。
使用 yum 安装软件包之前,需指定好 yum 下载 RPM 包的位置,此位置称为 yum 源。换句话说,yum 源指的就是软件安装包的来源。
网络 yum 源搭建
网络 yum 源配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名为".repo"(只要扩展名为 ".repo" 的文件都是 yum 源的配置文件)。
yum 命令
yum查询命令
查询所有已安装和可安装的软件包
yum list
查询执行软件包的安装情况
yum list 包名
从 yum 源服务器上查找与关键字相关的所有软件包
yum search 关键字
查询执行软件包的详细信息
yum info 包名
yum安装命令
yum -y install 包名
yum 升级命令
yum 升级软件包常用命令如下:
yum -y update:升级所有软件包。不过考虑到服务器强调稳定性,因此该命令并不常用。
yum -y update 包名:升级特定的软件包。
yum 卸载命令
除非你能确定卸载此包以及它的所有依赖包不会对系统产生影响,否则不要使用 yum 卸载软件包。
yum remove 包名
源码安装
Linux 系统中,绝大多数软件的源代码都是用 C 语言编写的,少部分用 C++(或其他语言)编写。因此要想安装源码包,必须安装 gcc 编译器(如果涉及 C++ 源码程序,还需要安装 gcc-c++)。
除了安装编译器,还需要安装 make 编译命令。要知道,编译源码包可不像编译一个 hello.c 文件那样轻松,包中含大量的源码文件,且文件之间有着非常复杂的关联,直接决定着各文件编译的先后顺序,因此手动编译费时费力,而使用 make 命令可以完成对源码包的自动编译。
Linux源码包安装软件,以安装 apache 为例,可分为以下几步:
1、下载 apache 源码包。
2、将源码包进行解压缩。
3、进入解压目录。
4、./configure 软件配置与检查。
- 检测系统环境是否符合安装要求
- 定义需要的功能选项。通过 "./configure--prefix=安装路径" 可以指定安装路径。注意,configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用 "./configure" 方式执行("./" 代表在当前目录下)。
- 把系统环境的检测结果和定义好的功能选项写入 Makefile 文件,因为后续的编译和安装需要依赖这个文件的内容
5、make 编译。make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被 Linux 识别的可执行文件,这些可执行文件保存在当前目录下。
6、正式开始安装软件。
源码包卸载
源码包的卸载,只需要找到软件的安装位置,直接删除所在目录即可,不会遗留任何垃圾文件。需要读者注意的是,在删除软件之前,应先将软件停止服务。
例如:
rm -rf /usr/local/apache2/