我创build了一个meta RPM软件包(比如说metapkg ),它可以在我的系统(CentOS 7)上获得我需要的所有依赖项。 这个包指定了它的依赖关系的确切版本(不包括架构)。
例如: Requires: perl = 5.16.3-285.el7
当我尝试用yum update升级我的系统时,Yum抱怨几个依赖性问题:
Error: Package: metapkg-1.1.0-1.noarch (myupdates) Requires: perl = 5.16.3-285.el7 Installed: 4:perl-5.16.3-285.el7.x86_64 (@anaconda) perl = 4:5.16.3-285.el7 Error: Package: metapkg-1.1.0-1.noarch (myupdates) Requires: grub2 = 2.02-0.17.0.1.el7.centos.4 Installed: 1:grub2-2.02-0.17.0.1.el7.centos.4.x86_64 (@anaconda) grub2 = 1:2.02-0.17.0.1.el7.centos.4 Error: Package: metapkg-1.1.0-1.noarch (myupdates) Requires: vim-enhanced = 7.4.160-1.el7 Installed: 2:vim-enhanced-7.4.160-1.el7.x86_64 (@anaconda) vim-enhanced = 2:7.4.160-1.el7 Error: Package: metapkg-1.1.0-1.noarch (myupdates) Requires: lvm2 = 2.02.115-3.el7_1.1 Installed: 7:lvm2-2.02.115-3.el7_1.1.x86_64 (@anaconda) lvm2 = 7:2.02.115-3.el7_1.1
我的架构是完整的x86_64,所以我不明白为什么百胜有别于perl-5.16.3-285.el7和perl-5.16.3-285.el7.x86_64 。
我试图在我的元程序包依赖关系指定架构,但即使我这样做,其他包无法更新…
有没有办法解决这个问题?
谢谢!
经过一番挖掘,我发现我没有在依赖版本中指定软件包的时代。 所以,Yum设置默认纪元( 0 ),与安装的(我的版本的Perl为4 )不匹配。
所以,像这样的依赖:
Requires: perl = 4:5.16.3-285.el7
一切按预期工作。