Centos
通過 yum 安裝特定的依賴版本
我試圖在 CentOS 7 伺服器上安裝一堆開源庫,它們都形成了一個相當複雜的相互依賴網路。我需要確保沒有版本控制衝突(“庫地獄”),例如,
LibA
取決於LibB v.1.2
但我LibB v0.9
錯誤地安裝。所以我需要:
- 找出我需要的每個庫的版本(這樣它們都依賴於彼此的正確版本);進而
- 用於
yum
安裝正確的版本雖然我稍後會在這裡提到特定的庫,但我認為這個問題可以泛化到庫之間存在相互依賴關係的任何
yum
場景。具體來說,我正在尋找安裝:
libpng-dev
(PNG庫)libjpeg-dev
(JPEG 庫)libtiff-dev
(TIFF 庫)libopencv-dev
(OpenCV)問題是,OpenCV 依賴於前三個。所以我需要確保
yum
為我安裝的 PNG、JPEG 和 TIFF 庫的版本也與 OpenCV 期望的版本兼容。此外,對於這 4 個庫中的每一個,我想執行一個命令來驗證目前安裝在我的系統上的確切版本。
關於我可以從哪裡開始的任何想法?提前致謝!
據我了解,您的問題分為兩部分:
- 如何找到每個庫所需的版本?
- 如何安裝正確的版本?
回答(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?”的詳細資訊。