一、前言¶
本文通过以下几个方面介绍Linux管理体系中软件包管理:
- 什么是软件包管理
- 为什么软件包管理对Linux系统如此重要?
- 常见的Linux软件包管理系统
- Linux软件包常见安装方式
二、什么是软件包管理¶
软件包管理是一种用于管理操作系统中的软件、工具和库的系统。它涵盖了软件的安装、更新、升级和卸载,以及与软件包相关的元数据和依赖性管理。在Linux系统中,软件包管理通常由特定的软件包管理系统(如APT、YUM、DNF、Pacman等)负责。
三、为什么软件包管理对Linux系统如此重要?¶
软件包管理在Linux系统中非常关键,因为它提供了以下重要优势:
- 简化安装和卸载:通过软件包管理系统,用户可以轻松地查找、下载和安装软件包,而不必手动下载和编译源代码。同样,卸载软件包也非常简单,不会留下残余文件或配置。
- 版本控制:软件包管理系统允许用户安装和更新软件包的特定版本。这对于确保系统的兼容性和稳定性非常重要,尤其是在服务器环境中。
- 依赖性管理:在Linux系统中,软件包之间通常存在依赖关系。软件包管理系统能够自动解决这些依赖关系,确保在安装或升级软件包时所需的其他软件包也会被正确安装。
- 安全性和稳定性:通过软件包管理系统,操作系统维护者可以提供安全性更新和修补程序。这确保了系统可以及时获取安全性修复和错误修复,提高了系统的安全性和稳定性。
- 管理复杂性:软件包管理系统降低了软件安装和维护的复杂性。系统管理员可以轻松地管理数百甚至数千个软件包,而不必手动处理每个软件包的状态。
四、常见的Linux软件包管理系统¶
APT (Advanced Package Tool)
- 工作原理:APT是Debian Linux系统中使用的软件包管理系统。它基于.deb软件包格式,使用dpkg工具进行底层包管理,而APT工具集用于高级包管理,包括依赖性解决和软件包搜索。
- 区别:APT是Debian和基于Debian的发行版(如Ubuntu)的首选软件包管理系统。它使用二进制包和源码包,允许用户轻松升级和安装软件。
- 优势:APT提供了强大的依赖性解决和版本控制,使系统更加稳定。它具有大型软件仓库,支持PPA(个人软件包档案)扩展,使用户可以获取大量的第三方软件包。
RPM (Red Hat Package Manager)
- 工作原理:RPM是Red Hat和Fedora Linux系统中使用的软件包管理系统。它使用.rpm软件包格式,通过rpm命令进行包管理,支持事务性包操作。
- 区别:RPM是Red Hat Linux家族的标准,包括Red Hat Enterprise Linux(RHEL)、Fedora和CentOS。它专注于二进制包管理,通常较早地发布新软件包。
- 优势:RPM系统提供了广泛的企业级支持,是大型服务器和企业环境中的首选。YUM(Yellowdog Updater, Modified)是RPM的前端工具,提供了更高级的依赖性解决和简化的包管理。
Pacman
- 工作原理:Pacman是Arch Linux中使用的软件包管理系统。它使用.tar.xz软件包格式,通过pacman命令进行包管理。Pacman支持AUR(Arch User Repository),允许用户共享和安装第三方软件包。
- 区别:Arch Linux是Pacman的首选发行版,它追求简洁和灵活性,鼓励用户自定义系统。
- 优势:Pacman具有出色的速度和性能,提供了易用的命令行界面。它的AUR支持使用户能够轻松获取和共享软件包,增加了软件包的可用性。
YUM (Yellowdog Updater, Modified)
- 工作原理:YUM是Red Hat家族(包括RHEL、Fedora和CentOS)中使用的软件包管理系统。它使用.rpm软件包格式,通过yum命令进行包管理,支持依赖性解决。
- 区别:YUM是RPM的前端工具,提供了更高级的依赖性解决和更友好的用户界面。
- 优势:YUM被广泛用于企业和服务器环境,具有强大的版本控制和软件仓库管理功能。它支持模块化软件包,使系统管理员可以更灵活地管理软件安装。
五、Linux软件包常见安装方式¶
Linux软件包常见安装方式有四种,详细如下:
| 安装软件方式 | 说明 | 应用场景 |
|---|---|---|
| yum/apt方式 | 通过网络下载软件包,替我们安装, 如果有依赖自动下载依赖并安装自动 | 大部分场景,没有网络可以自建yum软件仓库,内网使用 |
| rpm/dpkg方式 | 手动下载rpm包,手动安装rpm包,缺少依赖需要自己解决 | 没有网络,误删除软件包,依 赖较少 |
| 二进制安装方式 | 类似于绿色软件,解压既用,可能需要准备环境, 并非每个软件都有,一般是服务,数据库,k8s,promethues监控 | 如果有可以选用,优先选择 yum,没有那就选择二进制方式 |
| 编译安装方式 | 可以自定义安装,比较漫长,缺少依赖自己解决 | 软件进行自定义,增加功能 |
其中安装方式推荐:yum优先>rpm包>二进制>编译安装
5.1 rpm安装方式¶
从增、删、改、查四个方面说说rpm安装方式:
| rpm命令选项 | 命令说明 |
|---|---|
| rpm -ivh 包名 | 安装rpm包,其中命令选项说明: -i:安装软件包 -v:显示过程 -h:人类可读显示过程 |
| rpm -qa 包名 | 查看软件包是否安装,其中命令选项说明: -q:显示指定软件包是否已安装 -a:显示所有软件包 |
| rpm -ql 包名 | 查看软件包内容,其中命令选项说明: -q:显示指定软件包是否已安装 -l:显示软件包的文件列表 |
| rpm -qf 包名 | 查看文件或命令所归属的软件包,其中命令选项说明: -q:显示指定软件包是否已安装 -f:显示文件或命令属于哪个软件包 |
| rpm -Uvh 包名 | 升级软件包(如果软件包不存在,相当是ivh安装),其中命令选项说明: -U:更新 -v:显示过程 -h:人类可读显示过程 |
| rpm -e 包名 | 删除软件包 |
5.1.1 增加-安装rpm包¶
1、安装rpm包
(1)下载软件包
$ wget --no-check-certificate -P /opt/tools/ https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.0-1.el7.x86_64.rpm
上面参数说明:
wget: 这是用于从Web下载文件的命令行工具。--no-check-certificate: 这个选项告诉wget不要验证SSL证书。这通常用于下载不受信任证书保护的文件,例如从非官方或自签名站点下载文件时。-P /opt/tools/: 这个选项指定下载后的文件将保存在/opt/tools/目录下。在这里,软件包将被保存在/opt/tools/目录中。如果没有会自己进行创建。https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.0-1.el7.x86_64.rpm: 这是要下载的文件的URL。wget将从这个URL下载zabbix-agent2-6.0.0-1.el7.x86_64.rpm软件包。
(2)安装依赖
$ yum install -y pcre2
(3)安装软件包zabbix-agent2
$ cd /opt/tools
$ rpm -ivh zabbix-agent2-6.0.0-1.el7.x86_64.rpm
5.1.2 查看-查看rpm包¶
1、检查软件包是否安装成功
$ rpm -qa |grep zabbix
$ rpm -qa zabbix-agent2
2、查看已经安装成功的软件包的内容
$ rpm -ql zabbix-agent2
3、查询某个命令或文件属于哪个软件包,这里以wget命令进行演示
$ which wget
/bin/wget
$ rpm -qf /bin/wget
wget-1.14-18.el7_6.1.x86_64
5.1.3 修改-升级¶
1、下载新版本6.0.7的rpm包
$ wget --no-check-certificate -P /opt/tools/ https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
2、升级版本
$ rpm -Uvh /opt/tools/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
说明:如果软件包不存在,相当是ivh安装
3、检查软件包是否升级成功
$ rpm -qa |grep zabbix
$ rpm -qa zabbix-agent2
5.1.4 删除¶
1、查看软件包
$ rpm -qa |grep zabbix
2、卸载6.0.7的rpm包
$ rpm -e zabbix-agent2-6.0.7-1.el7.x86_64
$ rpm -e zabbix-agent2
注意:只能删除rpm和yum方式安装的
3、验证,回显为空则代表删除成功
$ rpm -qa |grep zabbix
5.2 二进制安装方式¶
二进制安装分为三步,俗称三部曲:
- 一、 配置
- 二、 编译
- 三、 编译安装
下面通过黑客帝国来演示二进制安装方式:
5.2.1 配置¶
1、配置之前需要提前下载安装包并上传到机器
点击此处即可下载cmatrix-1.2a.tar.gz安装包
2、解压并进入目录
$ tar xf cmatrix-1.2a.tar.gz
$ cd cmatrix-1.2a
3、下载依赖
$ yum install -y ncurses-devel
4、配置,默认安装位置:/usr/local/bin/
$ cd cmatrix-1.2a
$ ./configure
5、检查结果,回显为0代表执行成功
$ echo $?
0
5.2.2 编译¶
1、进行编译安装
$ cd cmatrix-1.2a
$ make
2、检查结果,回显为0代表执行成功
$ echo $?
0
5.2.3 编译安装¶
1、进行编译安装
$ cd cmatrix-1.2a
$ make install
2、检查结果,回显为0代表执行成功
$ echo $?
0
3、执行cmatrix命令验证,按ctrl + c退出

六、YUM软件包管理¶
6.1 yum软件安装流程¶
1、运行yum install -y wget命令
2、解析下wget软件包是否有依赖
3、yum根据本地配置的yum源的地址,进行请求(相关软件包wget,依赖软件包)。
4、如果yum源存在软件,则会通知yum进行下载,rpm包就被下载到yum缓存目录中
5、软件包和依赖(如果有)都下载OK,则开始安装
6、 安装完成删除刚刚下载的rpm包(默认)
6.2 yum源配置¶
6.2.1 什么是yum源¶
存放软件包地方,配置目录/etc/yum.repos.d/*.repo
6.2.2 为什么配置yum源¶
配置yum源的原因主要为:
- 下载快
- 系统默认的yum源无法满足要求(需要的软件yum源中没有)
其中使用虚拟机(私有云),物理服务器需要配置yum源,而如果使用公有云,如阿里云则一般都是配置好的。
6.2.3 一键配置为阿里云的yum源¶
1、查看系统正在使用的yum源列表
$ yum repolist
2、设置系统的yum源(CentOS7)为阿里云的yum源
(1)备份
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
(2)配置系统默认源为阿里云的Cnetos源
$ wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或
$ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3、增加阿里云epel源
(1)备份(如有配置其他epel源)
$ 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
(2)下载新repo 到/etc/yum.repos.d/
$ wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
6.2.4 yum源配置基础模板¶
下面列举一个基本的yum源配置文件的模板:
[repository_name]
name=Repository Name
baseurl=http://example.com/yum/repo/ # 替换为实际的仓库 URL
enabled=1 # 1 表示启用仓库,0 表示禁用
gpgcheck=0 # 1 表示启用 GPG 检查,0 表示禁用
gpgkey=http://example.com/RPM-GPG-KEY # 替换为实际的 GPG 密钥 URL
在这个模板中:
[repository_name]是你为该仓库指定的名称,可以根据需要进行更改。name是仓库的描述,用于标识该仓库。baseurl是 YUM 仓库的基本 URL,指向包含 RPM 软件包的目录。请替换为你实际的仓库 URL。enabled指示仓库是否启用,1 表示启用,0 表示禁用。gpgcheck指示是否启用 GPG 检查,1 表示启用,0 表示禁用。gpgkey是 GPG 密钥的 URL 地址,用于验证仓库中的软件包。请替换为你实际的 GPG 密钥 URL。
6.3 yum源配置文件详解¶
下面以cat /etc/yum.repos.d/CentOS-Base.repo命令回显内容展开文件描述:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
针对上面配置文件说明:
| yum源配置文件详解 | 说明 |
|---|---|
| [base] | yum源的名字 |
| name= | yum源详细名字 |
| failovermethod= | 可选配置,如果yum源地址失败,则使用下面备选地址,一般不用,配置1个即可 |
| baseurl= | yum源地址,打开后要看到repodata目录,这是yum配置的核心 |
| enabled=1 | 是否开启这个yum源(默认开启,所以不显示),1代表开启,0代表关闭 |
| gpgcheck=1 | 开启软件包检查,未来自建yum仓库可以关闭,1代表开启,0代表关闭 |
| gpgkey | 用于检查的秘钥. 如果关闭检查gpgkey省略 |
6.4 yum命令配置文件¶
yum命令:下载和安装软件包,其配置文件:/etc/yum.conf(一般不经常做变更)
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
未来在正式环境中几乎很少修改。其中配置文件主要参数说明:
| yum命令配置文件(/etc/yum.conf) | 说明 |
|---|---|
| keepcache= | 如果为0,表示关闭缓存,软件下载安装后自动删除rpm包;如果为1,表示开启缓存,软件下载安装后自动删除rpm包 |
| cachedir | yum下载软件包的缓存目录,/var/cache/yum/$basearch/$releasever |
| logfile | yum命令的记录 /var/log/yum.log |
6.5 yum命令详解¶
从增、删、改、查四个方面说说yum安装
| yum命令选项 | 命令说明 |
|---|---|
| yum install -y bash-completion bash-completion-extras | 安装命令补全工具 |
| yum install -y 软件包 | 安装软件包(包含依赖) |
| yum reinstall -y 软件包 | 重新安装软件包(包含依赖) |
| yum provides 命令或文件 | 检查软件/搜索软件 |
| yum search all 命令或文件 | 检查软件/搜索软件 |
| yum repolist | 查看yum源信息 |
| yum list | 显示所有yum仓库中所有软件,未来用于根据软件包名字查找 |
| yum remove 软件包 | 删除软件包(同时删除依赖),建议使用rpm -e删除 |
| yum clean all | 清空缓存,一般自建yum仓库需要使用 |
| yum update/upgrade | 更新 |
6.5.1 增加-安装¶
1、安装tree软件包
$ yum install -y tree
2、重新安装tree软件包
$ yum reinstall -y tree
6.5.2 查看-检查/搜索¶
1、查看tree命令所属软件包
$ yum provides tree
2、查看tree命令所属软件包,不推荐使用,回显内容太多,需要一个个测试
$ yum search all tree
3、查看yum源信息
$ yum repolist
4、显示所有yum仓库中所有软件
$ yum list
6.5.3 改-升级¶
1、升级
$ yum update
或者
$ yum upgrade
6.5.4 删除¶
1、删除tree软件包(同时删除依赖)
$ yum remove tree
2、删除tree软件包(不删除依赖)
$ rpm -e tree-1.6.0-10.el7.x86_64
七、Ubuntu系统软件包管理¶
7.1 配置源¶
1、打开阿里云巴巴ubuntu镜像站,复制ubuntu 18.04(bionic) 配置(需要根据自身版本进行匹配选择)

deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
2、vim命令进入文件后,按gg到首行,再按dG删除文件全部内容,复制上面配置
$ vim /etc/apt/sources.list
deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
3、更新生成本地apt缓存
$ apt update
7.2 安装软件¶
安装软件并测试
$ apt install -y cmatrix lolcat
7.3 检查软件¶
从增、删、查三个方面说说dpkg用于管理软件安装包
| dpkg命令选项 | 命令说明 |
|---|---|
| dpkg -l | 检查是否安装软件包,其中命令选项说明: -l:显示已安装的软件包列表 |
| dpkg -i 包名 | 安装软件包,其中命令选项说明: -i:安装软件包 |
| dpkg -L 包名 | 检查软件包内容,其中命令选项说明: -L:显示与软件包关联的文件 |
| dpkg -r 包名 | 删除软件包,其中命令选项说明: -r:删除软件包 |
7.3.1 增加-安装¶
1、安装指定的软件包
$ dpkg -i File.deb
7.3.2 查看-检查/搜索¶
1、列出当前已安装的软件列表
$ dpkg -l
2、检查软件包内容
$ dpkg -L File.deb
7.3.3 删除¶
1、卸载指定的软件包
$ $ dpkg -r File.deb
7.4 debian系列VS红帽系列¶
| 功能 | debian(ubuntu) | 红帽(Centos,麒麟) |
|---|---|---|
| 检查是否安装 | dpkg -l(一般结合grep使用) | rpm -qa |
| 安装 | dpkg -i | rpm -ivh |
| 检查软件包内容 | dpkg -L | rpm -ql |
| 删除 | dpkg -r | rpm -e |