【问题标题】:Connflicting C++ libraries冲突的 C++ 库
【发布时间】:2018-03-13 22:14:27
【问题描述】:

我正在尝试在我的 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++ 库?

【问题讨论】:

  • 您要安装什么 RPM?无论如何,这似乎是服务器故障或超级用户的问题,因为它只是关于管理计算机上的软件包。

标签: c++ centos virtual-machine rpm


【解决方案1】:

无论您尝试安装什么神秘软件包,都表现不佳。它正在尝试安装一些共享库文件,这些文件按权利归 CentOS 7 上的 libstdc++ 包“所有”。由于这种不当行为,Yum 正确地拒绝了神秘包。

您应该与包作者交谈,并告知他们他们的包不符合质量指南。如果他们正在编写的软件绝对需要比在此环境中正式发布的版本更新的 libstdc++,那么他们可以:

  • Use devtoolset,或
  • statically link the runtime, 或
  • package the newer shared library 但是将它安装在一个孤立的地方,一个只有神秘软件才能使用的位置。它不得从平台自己的包中接管,除非您希望它引起奇怪的运行时行为,因为系统上的所有其他 C++ 应用程序突然链接到某个神秘的新版本 GCC 运行时库。

如果不需要不同的共享库版本,那么作者应该:

  • 首先针对官方分发的库进行构建,然后
  • 在他们的 RPM 的 .spec 文件中表示先决条件...到,例如libstdc++ & libgomp.

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多