在 EC2 / Amazon Linux AMI(基于 Centos)上,我创建了/etc/yum.repos.d/nginx.repo
:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
然后我就成功安装了nginx 1.4.2:
sudo yum --disablerepo="*" --enablerepo="nginx" install nginx
现在,当我运行时sudo yum update
,我得到:
---> Package nginx.x86_64 0:1.4.2-1.el6.ngx will be updated
---> Package nginx.x86_64 1:1.2.9-1.11.amzn1 will be an update
不!
如何永久阻止更新?(这实际上是降级)
答案1
第三方仓库的维护者应该以不干扰主仓库的方式命名他们的软件包,否则就会发生这样的冲突。像上述这样的冲突是不专业的,也是质量低劣的标志。
一些解决方法是:
YUM 优先级
您可以使用Yum 优先级通过分配给 .repo 文件中列出的存储库,配置每个存储库使用特定优先级 priority=N
。一些 Yum 开发人员批评了 Yum 优先级。请阅读底部的“警告说明”。
排除包
你也可以从某些存储库中排除软件包。因此,将类似这样的内容添加到您的主存储库。替换您的包名称。
[main]
exclude=php* kernel*
答案2
您可以使用 yum update-minimal
update-minimal 类似于升级,但会转到“最新”软件包匹配,以修复影响系统的问题
答案3
您可以使用以下命令指定不更新的软件包:
yum --exclude=nginx* update