我试图在 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
据我了解,你的问题分为两部分:
- 如何找到每个库所需的版本?
- 如何安装正确的版本?
回答(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?”的详细信息