Redhat

yum 和 rpm 對同一個包的不同要求

  • April 28, 2017

我有一個百勝回購:

[sensu-checks-prod]
name=sensu-checks-prod
baseurl=http://our.internal.repo/pulp/repos/Sensu_checks_el6-prod/
enabled=1
gpgcheck=0

它由 gem 到使用 fpm 創建的 RPM 組成

我已經編輯了這個包以將 sensu-rubygem(rest-client) 的版本要求更改為**=1.8.0**到 >=1.8.0

如果我從 repo 下載包

# wget http://our.internal.repo/pulp/repos/Sensu_checks_el6-prod/sensu-rubygem-sensu-plugins-jenkins-1.2.0-1.x86_64.rpm

並用 rpm 檢查

# rpm -qpR sensu-rubygem-sensu-plugins-jenkins-1.2.0-1.x86_64.rpm
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
ruby  
rubygems  
sensu-rubygem(chronic_duration) = 0.10.6
sensu-rubygem(jenkins_api_client) = 1.4.2
sensu-rubygem(rest-client) >= 1.8.0
sensu-rubygem(sensu-plugin) >= 1.2
sensu-rubygem(sensu-plugin) < 2.0

版本要求沒問題:sensu-rubygem(rest-client) >= 1.8.0

如果我與 yum 核對:

# yum deplist sensu-rubygem-sensu-plugins-jenkins
Modules complémentaires chargés : fastestmirror
Recherche de dépendances :
Determining fastest mirrors    
sensu-checks-prod                                                                                                                                                                                                      | 2.1 kB     00:00     
sensu-checks-prod/primary                                                                                                                                                                                              |  17 kB     00:00     
sensu-checks-prod                                                                                                                                                                                                                       64/64  
paquet : sensu-rubygem-sensu-plugins-jenkins.x86_64 1.2.0-1
 dépendance : sensu-rubygem(jenkins_api_client) = 1.4.2
  provider: sensu-rubygem-jenkins_api_client.x86_64 1.4.2-1
 dépendance : sensu-rubygem(rest-client) = 1.8.0
  Dépendance non satisfaite
 dépendance : ruby
  provider: ruby.x86_64 1.8.7.374-4.el6_6
 dépendance : rubygems
  provider: rubygems.noarch 1.3.7-1.el6
  provider: rubygems.noarch 1.3.7-5.el6
 dépendance : sensu-rubygem(sensu-plugin) < 2.0
  provider: sensu-rubygem-sensu-plugin.x86_64 1.4.4-1
  provider: sensu-plugin.x86_64 1.0-1
  provider: sensu-rubygem-sensu-plugin.x86_64 1.4.5-1
 dépendance : sensu-rubygem(chronic_duration) = 0.10.6
  provider: sensu-rubygem-chronic_duration.x86_64 0.10.6-1
 dépendance : sensu-rubygem(sensu-plugin) >= 1.2
  provider: sensu-rubygem-sensu-plugin.x86_64 1.4.4-1
  provider: sensu-plugin.x86_64 1.0-1
  provider: sensu-rubygem-sensu-plugin.x86_64 1.4.5-1

不行:sensu-rubygem(rest-client) = 1.8.0

yum clean 一切都完成了。

為什麼 yum 不反映rpm 正確顯示的**>= ?**

謝謝

我猜 yum 正在檢測未將 ’ > ’ 變成 ’ >= ’ 的未修改版本的 RPM。如果你yum list--show duplicates旗幟做 a ,你可以看看那裡是否有不止一個。

如果這是正在發生的事情,那麼使用 repo 優先級可能是您想要解決的問題。您還可以嘗試--enablerepo,或使用和--disablerepo在 repo 配置中為每個 repo 設置過濾器。exclude``includepkgs

Priorities 是舊發行版中的外掛,因此您可能必須安裝它。

引用自:https://serverfault.com/questions/847199