进阶实战:进阶包管理与软件版本锁定

在日常使用中,你可能会遇到“新版本软件有 Bug”或“特定的项目必须使用旧版本环境”的情况。本章节将教你如何精准控制软件包的版本,而不是被动地接受更新。


1. 软件锁定:防止“误升级”

如果你安装了某个驱动或服务,且工作得非常完美,你可以选择将其“锁定”,即使运行全局升级,该包也不会变动。

TAB分类
💡 点击标签可切换下方对比内容
视图分类:

APT (Debian/Ubuntu)

# 锁定软件包
sudo apt-mark hold <pkg_name>
 
# 取消锁定
sudo apt-mark unhold <pkg_name>
 
# 查看已锁定清单
apt-mark showhold

DNF (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 nvidia

2. 软件降级:回滚到旧版本

⚠️ 风险提示

软件降级可能会导致由于依赖库版本不匹配而引起的崩溃。建议在降级前进行系统快照备份。

TAB分类
💡 点击标签可切换下方对比内容
视图分类:

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

掌握了“锁定”与“降级”,你就真正拥有了对系统的终极控制权,不再害怕“滚挂”和“强制升级”。

Navigation