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

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


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

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

# 锁定软件包
sudo apt-mark hold <pkg_name>
 
# 取消锁定
sudo apt-mark unhold <pkg_name>
 
# 查看已锁定清单
apt-mark showhold
# 安装插件
sudo dnf install 'dnf-command(config-manager)'
 
# 锁定软件包 (通过 version-lock 插件)
sudo dnf versionlock add <pkg_name>
 
# 取消锁定
sudo dnf versionlock delete <pkg_name>

修改 /etc/pacman.conf,在 IgnorePkg 行添加包名:

IgnorePkg = linux linux-headers nvidia

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

⚠️ 风险提示

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

Arch 官方提供了一个非常强大的工具 downgrade (需通过 AUR 安装):

sudo downgrade <pkg_name>

运行后,它会列出缓存中或 A.L.A 仓库里的所有历史版本供你选择。

# 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. 结业练习

Navigation