Linux软件包管理完全指南

Linux软件包管理完全指南

软件包管理是Linux基础技能。无论是安装应用、更新系统还是排查依赖问题,都需要熟练掌握包管理工具。

  1. 熟悉 apt 和 yum 的基本命令
  2. 掌握软件源配置方法
  3. 学会处理依赖问题
  4. 了解版本管理和回滚操作
  5. 内网环境搭建本地源

包管理器对比

发行版 包管理器 包格式 配置文件
Debian/Ubuntu apt/apt-get .deb /etc/apt/sources.list
CentOS/RHEL 7 yum .rpm /etc/yum.repos.d/
CentOS/RHEL 8+ dnf .rpm /etc/yum.repos.d/

apt 包管理核心命令

软件源配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1234567891011121314# 备份当前配置
cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 编辑软件源
vim /etc/apt/sources.list

# 更新软件包索引
apt update

# 升级所有软件包
apt upgrade

# 升级系统(含内核)
apt dist-upgrade

软件安装与卸载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1234567891011121314151617181920212223# 搜索软件包
apt search nginx

# 查看软件包信息
apt show nginx

# 安装软件
apt install nginx

# 安装指定版本
apt install nginx=1.18.0-0ubuntu1

# 卸载软件(保留配置)
apt remove nginx

# 完全卸载(删除配置)
apt purge nginx

# 清理无用依赖
apt autoremove

# 清理缓存
apt clean

软件包查询与管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1234567891011121314151617# 列出已安装软件
apt list --installed

# 列出可升级软件
apt list --upgradable

# 查看软件依赖
apt depends nginx

# 查看软件文件列表
apt list --installed | grep nginx

# 查找文件所属包
dpkg -S /usr/sbin/nginx

# 查看包版本历史
apt-cache policy nginx

yum/dnf 包管理核心命令

软件源配置

1
2
3
4
5
6
7
8
9
10
11
12
13
12345678910111213# 查看仓库列表
yum repolist

# 启用/禁用仓库
yum-config-manager --enable epel
yum-config-manager --disable epel

# 清理缓存
yum clean all
yum makecache

# 更新所有软件
yum update

软件安装与管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1234567891011121314151617# 搜索软件
yum search nginx

# 查看软件信息
yum info nginx

# 安装软件
yum install nginx

# 卸载软件
yum remove nginx

# 查看历史操作
yum history

# 回滚操作
yum history undo <ID>

实战案例:搭建自定义软件源

问题场景

公司内网服务器无法访问外网,需要搭建本地软件源,实现离线环境下的软件安装和更新。

解决方案

第一步:准备软件源镜像

1
2
3
4
5
6
7
8
9
123456789# 在有网络的机器上下载软件包
mkdir -p /opt/repo/packages
cd /opt/repo/packages

# 下载 nginx 及其依赖
apt-get download $(apt-cache depends --recurse nginx | grep "^nginx\|^lib")

# 或使用 apt-rdepends(需先安装)
apt-rdepends nginx | grep "^lib" | xargs apt-get download

第二步:创建软件源索引

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
123456789101112131415161718# 安装 dpkg-dev 工具
apt install dpkg-dev

# 生成 Packages 索引
cd /opt/repo/packages
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

# 创建 Release 文件
cat > Release << EOF
Origin: Local Repository
Label: Local
Suite: stable
Version: 1.0
Codename: stable
Architectures: amd64
Components: main
Description: Local offline repository
EOF

第三步:配置本地源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1234567891011121314# 创建源配置
cat > /etc/apt/sources.list.d/local.repo << EOF
deb [trusted=yes] file:/opt/repo/packages ./
EOF

# 或使用 HTTP 服务(内网共享)
# 将 /opt/repo 挂载到 Web 服务器
# 客户端配置:deb http://192.168.1.100/repo/packages ./

# 更新索引
apt update

# 验证源配置
apt policy nginx

第四步:测试软件安装

1
2
3
4
5
12345# 从本地源安装
apt install nginx

# 查看安装来源
apt-cache policy nginx

常见问题解决

问题 1: 依赖关系错误

1
2
3
4
5
12345# 修复依赖
apt --fix-broken install

# 强制安装(谨慎使用)
dpkg -i --force-all package.deb

问题 2: GPG 签名验证失败

1
2
3
4
5
12345# 添加 GPG 密钥
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <KEY_ID>

# 或跳过验证(仅内网可信源)
# 在 sources.list 中添加 [trusted=yes]

问题 3: 软件包版本冲突

1
2
3
4
5
6
7
8
9
10
11
1234567891011# 查看版本
apt-cache policy <package>

# 安装特定版本
apt install <package>=<version>

# 锁定版本
apt-mark hold <package>

# 解除锁定
apt-mark unhold <package>

总结

软件包管理的关键点:

  1. 熟悉 apt 和 yum 的基本命令
  2. 掌握软件源配置方法
  3. 学会处理依赖问题
  4. 了解版本管理和回滚操作
  5. 内网环境搭建本地源