Centos7 的 Yum 包管理
常用操作
查看软件包的可用版本
- 方法一:使用
yum info
命令
1 | sudo yum info <包名> --showduplicates |
- 方法二:使用
yum list
命令
1 | sudo yum list <包名> --showduplicates |
- 方法三:使用
yum-utils
工具
1 | # 安装 yum-utils 工具 |
1 | # 查看软件包的历史版本 |
安装指定版本的软件包
在使用 yum
安装软件时,可以指定要安装的版本。以下是安装指定版本软件的方法:
查找可用版本
首先,查看某个软件包的所有可用版本:
1 | yum list <包名> --showduplicates |
安装指定版本
使用 yum install
命令并指定要安装的版本号:
1 | yum install <包名>-<版本号> |
例如,要安装 httpd
的特定版本 2.4.6-90.el7.centos
,可以使用以下命令:
1 | yum install httpd-2.4.6-90.el7.centos |
排除其他版本(可选)
如果想确保不会意外升级到其他版本,可以配置 yum
排除其他版本。编辑 /etc/yum.conf
文件,并添加以下行:
1 | [main] |
可以排除多个软件包,使用空格分隔:
1 | [main] |
然后,在需要安装特定版本时,可以使用以下命令:
1 | yum install --disableexcludes=all <包名>-<版本号> |
降级到指定版本(可选)
如果已经安装了某个包,但想降级到某个特定版本,可以使用 yum downgrade
命令:
1 | yum downgrade <包名>-<版本号> |
回滚到特定版本(可选)
可以使用 yum history
命令来查看和回滚特定版本:
1 | # 查看所有的历史记录 |
特别注意
如果在某个 YUM 历史操作记录中,安装或更新了多个软件包,那么执行回滚后,该历史记录里的所有操作都会回滚(即可能会批量回滚多个软件的版本)。
排除更新指定的软件包
在 CentOS 7 系统中,如果想使用 yum update
更新系统时排除某个软件包,可以通过以下几种方法来实现:
方法一
在运行 yum update
命令时,使用 --exclude
选项来排除特定的软件包。例如,如果想要排除 httpd
软件包,可以运行以下命令:
1 | sudo yum update --exclude=httpd |
也可以排除多个软件包,例如:
1 | sudo yum update --exclude=httpd --exclude=nginx |
方法二
如果希望永久性地排除某个软件包的更新,可以编辑 yum
的配置文件 /etc/yum.conf
,在 [main]
部分添加 exclude
选项。例如:
1 | [main] |
可以排除多个软件包,使用空格分隔:
1 | [main] |
这样配置之后,每次运行 yum update
时,都会自动排除指定的软件包。
方法三
可以使用 yum-plugin-versionlock
插件来锁定特定软件包的版本。首先安装该插件:
1 | sudo yum install yum-plugin-versionlock |
然后锁定想要的版本的软件包,例如:
1 | sudo yum versionlock add httpd |
这将会锁定当前安装的 httpd
软件包版本,防止它被更新,可以查看当前锁定的软件包列表:
1 | yum versionlock list |
如果需要取消版本锁定,可以使用以下命令:
1 | sudo yum versionlock delete httpd |
常见问题
域名无法解析
当执行 yum update
命令时,出现 mirrorlist.centos.org no longer resolve
的错误信息。这是由于域名 mirrorlist.centos.org
已经失效,新的的域名应该是 vault.centos.org
。解决方法是使用 sed
命令批量更改 Repo 文件里的域名,如下所示:
1 | sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo |
YUM 更新系统出错
在 Centos7 上执行 yum update
命令更新系统时,出现 “Invalid version flag: or” 错误,通常是由于 Yum 配置文件或某些第三方软件包配置不正确导致的。以下是解决该问题的一些方法:
- 方法一:清理缓存。尝试清理 Yum 的缓存,并重新更新。
1 | sudo yum clean all |
- 方法二:检查并修复软件仓库配置。某些第三方仓库配置文件可能会引起该错误,尝试禁用所有第三方仓库,只使用默认的 CentOS 仓库进行更新。
1 | # 列出所有启用的仓库 |
1 | # 禁用所有第三方仓库 |
1 | # 再次尝试更新 |
- 方法三:查看并修复依赖关系。有时依赖关系可能会引起问题,尝试修复:
1 | sudo yum check |