一、前言

本文通过以下几个方面介绍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

注意:只能删除rpmyum方式安装的

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退出

二进制安装方式-1

六、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) 配置(需要根据自身版本进行匹配选择)

image-20231219143540300

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