从YUM更新中排除特定的回购


13

我正在RHEL 5.5上进行系统范围的yum更新,并且IUS EPEL存储库抛出缺少的依赖项错误:

php53-mcrypt-5.3.3-4.ius.el5.x86_64 from installed has depsolving problems
--> Missing Dependency: php53-common = 5.3.3-4.ius.el5 is needed by package php53-mcrypt-   5.3.3-4.ius.el5.x86_64 (installed)
Error: Missing Dependency: php53-common = 5.3.3-4.ius.el5 is needed by package php53-mcrypt-5.3.3-4.ius.el5.x86_64 (installed)

有没有一种方法可以对所有其他存储库运行YUM更新,而忽略IUS EPEL存储库以跳过此依赖关系问题?

澄清度

我正在尝试仅从Redhat Network安装更新。我找不到存储库名称,因此无法执行类似操作,sudo yum --disablerepo=* --enablerepo=rhel update因为我使用的yum版本不支持后面列出的多个存储库--disablerepo

更新资料

我的临时解决方法是运行sudo yum --exclude=php53* update。我坚信有更好的方法。这种更好的方法包括解决实际问题,因此我也向IUS社区项目提交了一个bug 。

更新#2

看起来我发现了依赖项的问题。我仍然认为应该有一个可行的解决方法。

谢谢!


我已经更新了答案,以考虑您的澄清。
质粒87

Answers:


21

尝试禁用回购开关:

--disablerepo=REPONAME

更新

要查找当前“已知”的所有存储库(启用和禁用):

yum repolist all

然后,找出哪个存储库使您对上述软件包感到悲伤,请尝试:

yum list php53-mcrypt-5.3.3-4.ius.el5.x86_64 --showduplicates

然后,这将显示您的哪个存储库提供了上述软件包(您还将在列表上看到“已安装”,以显示本地安装的软件包)。

一旦知道使用禁用存储库开关的存储库,请再次尝试禁用开关。

yum update --disablerepo=[from above]

如果没有按照上述步骤选择要忽略的存储库,请尝试浏览/etc/yum.repos.d/,这是RHEL存储库定义的默认位置。进入该目录后,找到所有非标准RHEL基础并更新存储库文件,并包括enabled = 0,例如,

[repo]
enabled=0

希望这可以帮助。


如果我能够指定多个存储库,这可能会起作用。我试着--disablerepo=epel --disablerepo=ius--disablerepo=epel,ius
罗宾

yum repolist all显示仅启用以下存储库:epel,ius和rhel-x86_64-server-5。您的--showduplicates命令显示从ius存储库安装的软件包。因此,我尝试了以下操作sudo yum --disablerepo=* --enablerepo=rhel-x86_64-server-5 update,但仍在同一程序包上引发依赖项错误。同样,我尝试通过更改enabled=0/etc/yum.repos.d/下的设置来禁用存储库
Robin

我想像一下,当您安装IUS存储库时,它默认配置为启用。请尝试以下操作:sudo yum update --disablerepo=ius假设默认情况下启用所有其他存储库。否则,请尝试sudo yum update --exclude=php53-mcrypt-5.3.3-4.ius.el5.x86_64完全跳过此程序包。
质粒87

这些选项都不起作用。我想念一些东西。
罗宾

我只能想象然后在升级过程中需要升级软件包。如果运行,sudo yum deplist php53-mcrypt-5.3.3-4.ius.el5.x86_64它将显示该特定程序包的所有依赖关系和提供程序。以我使用PHP软件包和RHEL的经验,这是一个常见问题。不想偏离当前的问题,但是我发现Remi为PHP提供了最好的软件包,在移到其repos之后,我再也没有遇到过PHP的依赖问题。
质粒87

1

最简单的方法是在/etc/yum.repos.d/中用不需要的仓库注释Linux。


1

您可以在yum命令行上禁用多个存储库:

yum update --disablerepo=myrepo1 --disablerepo=myrepo2 --disablerepo=myrepo3

但是,如果这样做,则必须显式启用所需的存储库:

yum update --disablerepo=myrepo1 --disablerepo=myrepo2 \
           --disablerepo=myrepo3 --enablerepo=TheRepoIWant

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.