Centos

通過 yum 安裝特定的依賴版本

  • April 17, 2019

我試圖在 CentOS 7 伺服器上安裝一堆開源庫,它們都形成了一個相當複雜的相互依賴網路。我需要確保沒有版本控制衝突(“庫地獄”),例如,LibA取決於LibB v.1.2但我LibB v0.9錯誤地安裝。

所以我需要:

  1. 找出我需要的每個庫的版本(這樣它們都依賴於彼此的正確版本);進而
  2. 用於yum安裝正確的版本

雖然我稍後會在這裡提到特定的庫,但我認為這個問題可以泛化到庫之間存在相互依賴關係的任何yum場景。

具體來說,我正在尋找安裝:

  • libpng-dev(PNG庫)
  • libjpeg-dev(JPEG 庫)
  • libtiff-dev(TIFF 庫)
  • libopencv-dev(OpenCV)

問題是,OpenCV 依賴於前三個。所以我需要確保yum為我安裝的 PNG、JPEG 和 TIFF 庫的版本也與 OpenCV 期望的版本兼容。

此外,對於這 4 個庫中的每一個,我想執行一個命令來驗證目前安裝在我的系統上的確切版本。

關於我可以從哪裡開始的任何想法?提前致謝!

據我了解,您的問題分為兩部分:

  1. 如何找到每個庫所需的版本?
  2. 如何安裝正確的版本?

回答(1):yum deplist $PACKAGE將有助於顯示需要哪些依賴項。

[root@centos7 ~]# rpm -qi libopencv-dev
package libopencv-dev is not installed
[root@centos7 ~]# yum deplist libopencv-dev
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: muug.ca
* extras: mirror.its.sfu.ca
* updates: mirror.its.sfu.ca
[root@centos7 ~]# rpm -qi expect
package expect is not installed
[root@centos7 ~]# yum deplist expect
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: muug.ca
* extras: mirror.its.sfu.ca
* updates: mirror.its.sfu.ca
package: expect.x86_64 5.45-14.el7_1
 dependency: /bin/sh
  provider: bash.x86_64 4.2.46-20.el7_2
 dependency: libc.so.6(GLIBC_2.14)(64bit)
  provider: glibc.x86_64 2.17-106.el7_2.8
 dependency: libdl.so.2()(64bit)
  provider: glibc.x86_64 2.17-106.el7_2.8
 dependency: libm.so.6()(64bit)
  provider: glibc.x86_64 2.17-106.el7_2.8
 dependency: libm.so.6(GLIBC_2.2.5)(64bit)
  provider: glibc.x86_64 2.17-106.el7_2.8
 dependency: libtcl8.5.so()(64bit)
  provider: tcl.x86_64 1:8.5.13-8.el7
 dependency: libutil.so.1()(64bit)
  provider: glibc.x86_64 2.17-106.el7_2.8
 dependency: libutil.so.1(GLIBC_2.2.5)(64bit)
  provider: glibc.x86_64 2.17-106.el7_2.8
 dependency: rtld(GNU_HASH)
  provider: glibc.x86_64 2.17-106.el7_2.8
  provider: glibc.i686 2.17-106.el7_2.8
[root@centos7 ~]# 

要回答 (2),這個問題的答案有關於“我如何指示 yum 安裝特定版本的包 X?”的詳細資訊。

引用自:https://unix.stackexchange.com/questions/314555