我正在尝试从源代码构建 hhvm 以及从软件包安装它(以比较差异)。从源代码构建时,它需要最新版本的 libdwarf,因此我下载了一个 rpm 并安装了它。然后我构建了 hhvm,它运行正常。然后我尝试从存储库安装旧版本的 hhvm,并收到此错误。
Error: Package: hhvm-3.10.1-1.el7.centos.x86_64 (hhvm)
Requires: libdwarf.so.0()(64bit)
Available: libdwarf-20130207-4.el7.x86_64 (base)
libdwarf.so.0()(64bit)
Installed: libdwarf-20160115-2.fc24.x86_64 (@/libdwarf-20160115-2.fc24.x86_64)
~libdwarf.so.1()(64bit)
因此,看来 repo 版本依赖于 libdwarf.so.0,而我已安装 libdwarf.so.1。为什么这两个软件包会发生冲突?package.so.x
版本号的意义不就是为了可以同时安装两个版本吗?
答案1
您为与您正在运行的 Linux 发行版完全不同的发行版安装了 libdwarf 包。这不能保证能正常工作。
RPM 只是一种打包格式,无法保证软件包内容适合您的系统。软件包内的依赖关系信息可以做到这一点,这就是您无法执行此安装的原因。理论上您可以安装一个库的多个版本,但实际上,除非以非常严格控制的方式(例如软件集合)完成,否则这只会导致问题。
要修复此问题,请返回正确的libdwarf 包,它是 CentOS 自带的包。
yum downgrade libdwarf