进阶实战:进阶包管理与软件版本锁定
在日常使用中,你可能会遇到“新版本软件有 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 nvidia2. 软件降级:回滚到旧版本
风险提示
软件降级可能会导致由于依赖库版本不匹配而引起的崩溃。建议在降级前进行系统快照备份。
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>。