我正在尝试在我的 VM 中安装 RPM,并且在 yum install
期间收到以下消息。
file /usr/lib64/libstdc++.so.6 from install of myPackage.x86_64 conflicts with file from package libstdc++-4.8.5-16.el7_4.2.x86_64
file /usr/lib64/libz.so.1 from install of myPackage.x86_64 conflicts with file from package zlib-1.2.7-17.el7.x86_64
file /usr/lib64/libgcc_s.so.1 from install of myPackage.x86_64 conflicts with file from package libgcc-4.8.5-16.el7_4.2.x86_64
file /usr/lib64/libgomp.so.1 from install of myPackage.x86_64 conflicts with file from package libgomp-4.8.5-16.el7_4.2.x86_64
file /usr/lib64/libgomp.so.1.0.0 from install of myPackage.x86_64 conflicts with file from package libgomp-4.8.5-16.el7_4.2.x86_64
我在 Centos7 中运行,并且我非常确定 libstdc++-4.8.5-16 即将到来,因为我从 Centos 存储库安装了 gdb(我正在安装一组预打包的 RPMS)。
有没有办法解决这些冲突?例如,有没有办法告诉 gdb 使用更新的 libstdc++ 库?
最佳答案
无论您尝试安装什么神秘包,都表现不佳。它试图安装一些共享库文件,根据权利,这些文件属于 CentOS 7 上的 libstdc++ 包。由于这种不当行为,Yum 正确地拒绝了神秘包。
您应该与包作者联系并告知他们他们的包不符合质量准则。如果他们正在编写的软件绝对需要比该环境中正式发布的更新版本的 libstdc++,那么他们可以:
- Use devtoolset , 或
- statically link the runtime , 或
- package the newer shared library 但要将它安装在隔离的地方,在一个只会被神秘软件使用的位置。它绝不能接管平台自己的包,除非您希望它导致奇怪的运行时行为,因为系统上的所有其他 C++ 应用程序突然与 GCC 运行时库的某个神秘的更新版本链接。
如果不需要不同的共享库版本,那么作者应该:
- 首先针对官方分发的库进行构建,并且
- 在他们的 RPM 的
.spec
文件中表示先决条件……例如libstdc++ & libgomp。
关于c++ - 冲突的 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49266697/