yum降低软件包版本
在 Red Hat/CentOS 系统中,可以使用 yum
或 dnf
(RHEL 8+)来降低软件包版本。以下是几种常见的方法:
方法 1:使用 yum downgrade
降级指定版本
sudo yum downgrade <package-name>-<version>
示例:
sudo yum downgrade httpd-2.4.6-90.el7.centos
- 必须明确指定版本号,否则
yum
会尝试安装最新版本。 - 适用于已知旧版本号的情况。
方法 2:查看可用版本并降级
- 列出可用版本:
yum --showduplicates list <package-name>
- 选择旧版本降级:
sudo yum downgrade <package-name>-<old-version>
示例:
yum --showduplicates list python
sudo yum downgrade python-2.7.5-89.el7
- 适用于不确定旧版本号的情况。
方法 3:使用 yum history undo
回滚更新
如果软件包是最近更新的,可以通过 yum history
回滚:
- 查看事务历史:
yum history
- 撤销最近一次更新:
sudo yum history undo last
- 或撤销指定事务:
sudo yum history undo <transaction-id>
- 适用于误更新后快速回退。
方法 4:手动安装旧版本 RPM
如果 yum
仓库中找不到旧版本,可以手动下载 RPM 安装:
- 下载旧版本 RPM(如从 CentOS Vault):
wget http://vault.centos.org/7.x.x/os/x86_64/Packages/<package-name>-<version>.rpm
- 强制降级:
sudo rpm -Uvh --oldpackage <package-name>-<version>.rpm
- 适用于官方仓库已移除旧版本的情况。
注意事项
- 依赖问题:降级可能导致依赖冲突,需同时降级相关包(如
httpd
和mod_ssl
)。 - 核心包警告:
glibc
、kernel
、selinux-policy
等关键包不建议降级,可能导致系统不稳定。 - 版本锁定:降级后可使用
yum versionlock
防止再次更新:
。sudo yum install yum-versionlock sudo yum versionlock add <package-name>
总结
方法 | 适用场景 | 命令示例 |
---|---|---|
yum downgrade | 已知旧版本 | yum downgrade httpd-2.4.6 |
yum --showduplicates list | 查找可用版本 | yum --showduplicates list python |
yum history undo | 回滚最近更新 | yum history undo last |
手动 RPM 安装 | 仓库无旧版本 | rpm -Uvh --oldpackage package-old.rpm |
如果降级后出现问题,可尝试 yum reinstall
恢复默认版本,或从备份还原系统。