软件包的介绍
- 可以将软件包理解为软件安装包
- 在 Linux 下使用的是 .rpm 格式的安装包,在 Debian 和 Ubuntu 下则使用的 .deb 格式的软件包
三种安装软件的方式
- rpm 安装 -> 前期安装软件的方法,需要手动解决软件依赖关系,非常麻烦
- yum 安装 -> 其本质也是下载rpm包,然后自动进行安装,自动查找并解决软件依赖关系
- 编译安装 -> 可自定制安装软件的需求,以及软件的功能扩张
yum 的介绍
1. yum 的介绍
- Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- YUM是“Yellow dog Updater, Modified”的缩写,是一个软件包管理器,YUM从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。
- yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
- 尽管 RPM 能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决, 而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。 Yum 软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum 软件仓库可以 根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安 装到系统。
- Yum 软件仓库中的 RPM 软件包可以是由红帽官方发布的,也可以是第三方发布的,当 然也可以是自己编写的

- 对比windows下的软件管理工具

2. yum 的基本工作机制如下
- 服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内
- 客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装
3. yum 源的介绍
- 说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的。yum源就相当是一个目录项,当我们使用yum机制安装软件时,若需要安装依赖软件,则yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。
- 通俗理解: yum 源就相当于一个软件仓库,存放着各种软件
- yum 源的目录
- 只有存放在这个目录中的 xxx.repo 文件,才会被识别是 yum 源,且才会被 yum install 工具调用
# 进入yum源目录
cd /etc/yum.repos.d/
# 查看yum源文件
ls -l
yum 源的配置
1. yum 源的配置介绍
- 配置yum源就是为了提高软件的下载速度
- 因为默认的yum源是国外的,所以下载软件的时候会很慢,在这里需要将yum源改为阿里云的yum源来提高软件的下载速度
2.第一步: 打开阿里云镜像源地址
https://developer.aliyun.com/mirror

3.第二步: 对默认的 yum 源进行备份
- 自行备份
# 进入yum源目录
cd /etc/yum.repos.d/
# 创建备份文件夹
mkdir repo_bak
# 将默认的 yum 源移动到备份文件夹中
mv *.repo repo_bak/
- 使用阿里云的命令进行备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

4.第三步: 下载阿里云的 yum 源
- 注意: 这里需要下载对应当前系统版本的 yum 源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

5.第四步: 清空旧的 yum 缓存
yum clean all
6.第五步: 生成 yum 缓存
- yum 缓存的作用: 提前将需要的软件进行下载,然后当需要下载的时候直接去缓存中获取,相当于加速下载
- 最终生成的缓存来自于阿里云的 yum 仓库,便于加速软件下载
yum makecache
配置 yum 的 epel 扩展源
1.扩展源的介绍
- 以阿里云的软件仓库为例子,一个软件仓库不可能存放着所有的软件,此时我们就是使用第三方软件仓库下载需要的软件
- 当我们下载软件的时候,如果阿里云的软件仓库没有该软件,那么就会去第三方软件仓库里下载
2.epel 源的介绍
- 存放着许多第三方软件的软件仓库
- 如果在阿里云的软件仓库找不到你要下载的软件,那么就会去epel软件仓库里下载
3.第一步: 打开阿里云镜像源地址
https://developer.aliyun.com/mirror

4.第二步: 对默认的 yum 源进行备份
- 注意: 如果在配置阿里云源的时候已经备份过一次了,那么在配置 epel 源的时候就无需备份了
- 自行备份
# 进入yum源目录
cd /etc/yum.repos.d/
# 创建备份文件夹
mkdir repo_bak
# 将默认的 yum 源移动到备份文件夹中
mv *.repo repo_bak/
- 使用阿里云的命令进行备份
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

5.第三步: 下载阿里云的 epel 源
- 注意: 这里需要下载对应当前系统版本的 yum 源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum 的使用
1.yum 命令参数
参数 | 说明 |
-h | 显示帮助信息 |
-y | 对所有的提问都回答“yes” |
-c | 指定配置文件 |
-q | 安静模式 |
-v | 详细模式 |
-d | 设置调试等级(0-10) |
-e | 设置错误等级(0-10) |
-R | 设置yum处理一个命令的最大等待时间 |
-C | 完全从缓存中运行,而不去下载或者更新任何头文件 |
2.yum 命令的使用
- 安装软件包 -> 带提示安装
yum install 软件包名
- 安装软件包 -> 不带提示安装
yum install 软件包名 -y
- 同时安装多个软件包 -> 不带提示安装
yum install 软件包名 软件包名 -y
- 重新安装软件包
yum reinstall 软件包名
- 升级软件包
yum update 软件包名
- 移除软件包
yum remove 软件包名
- 清除所有仓库缓存
yum clean all
- 检查可以更新的软件包
yum check-update
- 查看系统中已安装的软件包
yum grouplist
- 安装软件包组
yum groupinstall 软件包组
- 查看所有软件仓库(即: 所有 yum 源)
yum repolist all
- 查看软件包的信息
yum info 软件包名
- 查看所有已安装和未安装的软件(即: 查看软件仓库的所有软件)
- 信息列的解释:
- 带@是已经安装的
- base是linux自带的软件包
- Centos7.4-BM 是安装BM时,BM提供的软件包
yum list all

- 搜索 Linux 上所有和关键字相关的包
yum search 软件包名

编译安装软件
- 注意: 这里的编译安装选择了安装 Python3 作为演示
1. 第一步 -> 安装软件所需的库环境
- 注意: 如果没有需要安装的库环境可以直接忽略此步骤
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
2. 第二步 -> 下载并解压软件压缩包
- 一般都会将软件压缩包下载 /opt 目录下
- 切换到 /opt 目录下
cd /opt
- 下载软件压缩包到 /opt 目录下
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz

- 解压软件安装包到 /opt 目录下
# 将 Python-3.6.7.tar.xz 压缩包解压成 Python-3.6.7.tar
xz -d Python-3.6.7.tar.xz
# 将 Python-3.6.7.tar 压缩包解压成 Python-3.6.7
tar -xf Python-3.6.7.tar

3.第三步 -> 为开始编译做准备
- 执行软件安装包中 configure 脚本文件,一般用来生成 Makefile 文件,为下一步的编译做准备
- 注意: 如果软件安装包中已经存在了 Makefile 文件,那么可以直接忽略此步骤,直接进行编译

- 命令: ./configure --prefix=路径 -> 指定将软件安装到指定目录下
- 注意: 该条命令必须在软件安装包目录(即: Python-3.6.7 目录)下运行,否则会找不到需要执行 configure 脚本文件
./configure --prefix=/opt/python36/
- 检查是否生成了 Makefile 文件

4.第四步 -> 开始编译
- make 命令的介绍
- 大多数的源代码包都是通过make命令进行编译的(当然有些perl或python编写的软件需要调用perl或python来进行编译)。
- 如果在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。
- make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。
- make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成
- 命令: make -> 开始编译
- 注意:
- make 命令必须在软件安装包目录(即: Python-3.6.7 目录)下运行,否则找不到 Makefile 文件
- 此步骤不会生成软件目录(即: /opt/python36/ 目录)
make
5.第五步 -> 安装软件
- 在进行安装软件之前,有些软件需要先运行 make check 或 make test来进行一些测试
- 命令: make install -> 安装软件
- 注意:
- make install 命令必须在软件安装包目录(即: Python-3.6.7 目录)下运行
- make install 需要使用 root 身份运行
- 此步骤才会生成软件目录(即: /opt/python36/ 目录)
make install
6.第四、五步可以同时执行
- 执行完编译步骤后,紧接着执行软件的安装
make && make install
7.第六步 -> 检测软件是否安装成功
- 检查软件目录(即: /opt/python36 目录)是否存在



- 检查软件是否能正常运行
- 在软件目录(即: /opt/python36 目录)下执行以下命令
./bin/python3.6
# 等同于
./bin/python3 # 因为 python3 是 python3.6 的软连接(即: 快捷方式)
8.第七步 -> 配置环境变量
- 这里就不进行说明了