Linux软件包管理完全指南
软件包管理是Linux基础技能。无论是安装应用、更新系统还是排查依赖问题,都需要熟练掌握包管理工具。
- 熟悉 apt 和 yum 的基本命令
- 掌握软件源配置方法
- 学会处理依赖问题
- 了解版本管理和回滚操作
- 内网环境搭建本地源
包管理器对比
| 发行版 |
包管理器 |
包格式 |
配置文件 |
| 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>
|
总结
软件包管理的关键点:
- 熟悉 apt 和 yum 的基本命令
- 掌握软件源配置方法
- 学会处理依赖问题
- 了解版本管理和回滚操作
- 内网环境搭建本地源