软件包的介绍


  • 可以将软件包理解为软件安装包

  • 在 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.第七步 -> 配置环境变量

  • 这里就不进行说明了