进阶实战:进阶包管理与软件版本锁定
在日常使用中,你可能会遇到“新版本软件有 Bug”或“特定的项目必须使用旧版本环境”的情况。本章节将教你如何精准控制软件包的版本,而不是被动地接受更新。
1. 软件锁定:防止“误升级”
如果你安装了某个驱动或服务,且工作得非常完美,你可以选择将其“锁定”,即使运行全局升级,该包也不会变动。
视图分类:
APT (Debian/Ubuntu)
# 锁定软件包
sudo apt-mark hold <pkg_name>
# 取消锁定
sudo apt-mark unhold <pkg_name>
# 查看已锁定清单
apt-mark showholdDNF (Fedora/RHEL)
# 安装插件
sudo dnf install 'dnf-command(config-manager)'
# 锁定软件包 (通过 version-lock 插件)
sudo dnf versionlock add <pkg_name>
# 取消锁定
sudo dnf versionlock delete <pkg_name>Pacman (Arch Linux)
修改 /etc/pacman.conf,在 IgnorePkg 行添加包名:
IgnorePkg = linux linux-headers nvidia2. 软件降级:回滚到旧版本
风险提示
软件降级可能会导致由于依赖库版本不匹配而引起的崩溃。建议在降级前进行系统快照备份。
视图分类:
Arch Linux
Arch 官方提供了一个非常强大的工具 downgrade (需通过 AUR 安装):
sudo downgrade <pkg_name>运行后,它会列出缓存中或 A.L.A 仓库里的所有历史版本供你选择。
Debian/Ubuntu
# 1. 查看可用版本
apt-cache policy <pkg_name>
# 2. 安装指定版本
sudo apt install <pkg_name>=<version_number>3. 仓库优先级管理 (PPA / Third-party)
当你同时开启了官方源和 PPA 源时,如果两个源都有同一个软件,系统该听谁的?
▶ APT Pinning 优先级配置
在 /etc/apt/preferences.d/ 下创建配置文件,可以强制指定某个源的优先级:
1000以上: 总是选择该版本(即使降级也会安装)。500: 默认优先级。-1: 永不安装该版本的软件。
4. 离线安装:处理没有网络的机器
- Debian 系: 下载
.deb包,运行sudo dpkg -i <pkg.deb>。 - 红帽系: 下载
.rpm包,运行sudo rpm -ivh <pkg.rpm>。 - Arch 系: 下载
.pkg.tar.zst,运行sudo pacman -U <pkg_path>。
5. 结业练习
任务 1 模拟锁定
选择一个不重要的工具(如 nano),将其设为“锁定”状态,然后运行全局更新检查,观察它是否出现在更新列表中。
练习 2 版本查询
使用 apt-cache policy 或 dnf info 查看某个关键软件包(如 gcc)的候选版本和已安装版本。
练习 3 离线分发
了解如何使用 apt-get download 下载全套依赖包,并实现在断网环境下完成软件安装。
Tip
掌握了“锁定”与“降级”,你就真正拥有了对系统的终极控制权,不再害怕“滚挂”和“强制升级”。