【问题标题】:Compatibility Issue from centos 5.x to 6.x从 centos 5.x 到 6.x 的兼容性问题
【发布时间】:2014-07-30 20:19:01
【问题描述】:

我有一个在 centos 5.x 中编译的 rpm,它需要 libnetsnmp.so.10 和其他共享对象。我想创建一个要在centos 6.x上运行的rpm,但安装失败,因为它说:

错误:依赖失败: 需要 libnetsnmp.so.10()(64bit) 等等...

但是 Centos 6.x 包含 libnetsnmp.so.20 所以我创建了 libnetsnmp.so.20 的 libnetsnmp.so.10 的符号链接。 但是问题还是一样。

那么你能帮我解决这个问题吗?

【问题讨论】:

  • 不要创建这样的系统级符号链接。那永远不是正确的答案。在 CentOS 6 而不是 CentOS 5 上重建您的 RPM,它应该可以工作。

标签: linux rpm centos6 shared-libraries


【解决方案1】:

如果不能为 Centos 6 重新编译,您可以尝试两件事,首先,在 Centos 6 服务器中安装正确的 libnetsnmp。如果这不是一个选项,您可以将以下内容添加到您的 RPM 规范文件中:

Autoreq: no

这将导致它不扫描您的二进制文件以查找依赖项(例如动态链接库),并自动将其构建到 RPM 中。

当然,如果确实需要那个版本的 libnetsnmp,那么您只是在路上冲洗自己,但很可能较新的版本也可以正常工作。

【讨论】:

  • 如果我为 libnetsnmp.so.20 的 libnetsnmp.so.10 创建链接,如果我只是复制二进制文件,则二进制文件运行良好。但是我需要安装rpm。有没有办法做到这一点?或者有没有办法在rpm的spec文件中只排除这个依赖?
  • 禁用自动要求只会有助于防止安装的 RPM 依赖项。它本身不会使二进制工作(符号链接或同样可怕的想法也是必要的)。
  • @Etan 他的问题是如何安装 RPM。他可以重新创建没有依赖关系的 RPM,也可以使用 --nodep 安装。
  • @khopdi 您可以按照我的回答或使用 --nodeps 安装 RPM。没有其他方法可以做到这一点。尝试“man rpm”安装和依赖选项。
  • 我能够解决依赖关系。但我收到 cpio: digest mismatch 错误。如何解决?
猜你喜欢
  • 2019-07-21
  • 2013-04-16
  • 2019-11-30
  • 2013-05-29
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多