【问题标题】:how to add custom path for rpm dependencies如何为 rpm 依赖项添加自定义路径
【发布时间】:2018-09-10 19:32:05
【问题描述】:

我正在尝试安装glib 2.14所需的一些软件

所以我用这个教程安装了它:How to upgrade glibc from version 2.12 to 2.14 on CentOS?

问题是glib 2.14 路径是/opt/glibc-2.14/lib/libc.so.6

所以当我尝试使用 rpm 安装软件时,我仍然收到此错误:

error: Failed dependencies:
        libc.so.6(GLIBC_2.14)(64bit) is needed by xyz-4.6.6-1.x86_64
        libc.so.6(GLIBC_2.15)(64bit) is needed by xyz-4.6.6-1.x86_64
        libc.so.6(GLIBC_2.17)(64bit) is needed by xyz-4.6.6-1.x86_64

如何为 rpm 依赖项添加自定义路径?

【问题讨论】:

    标签: linux rpm


    【解决方案1】:

    如果您向我们提供您尝试安装的软件包的名称,将会有所帮助。你不能只提供一个路径,RPM 会检查它是否有任何提供这些库的包记录在案,并且没有。您可以使用以下几种方法:

    1. 使用--nodeps

      如果您已经知道自己拥有所需的一切,那么在 IMO 中使用 --nodeps 是完全可以的。

    2. 为缺少的库创建虚拟包(高级

      您缺少以下库:libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.15)(64bit)libc.so.6(GLIBC_2.17)(64bit)

      这是一个示例.spec 文件,用于创建一个声称提供这些库的虚拟包:

      Name: libc-virtual-provides
      Provides: libc.so.6(GLIBC_2.14)(64bit)
      Provides: libc.so.6(GLIBC_2.15)(64bit)
      Provides: libc.so.6(GLIBC_2.17)(64bit)
      Version: 1.0
      Release: 1
      Summary: Virtual package providing libc 2.14, 2.15, 2.17
      License: Public domain
      
      %description
      Virtual package providing libc 2.14, 2.15, 2.17
      
      %prep
      
      %files
      
      %changelog
      

      要从这个 SPEC 文件创建一个虚拟包,首先创建一些目录:

      mkdir -p ~/rpmbuild/BUILD ~/rpmbuild/BUILDROOT ~/rpmbuild/RPMS ~/rpmbuild/SOURCES ~/rpmbuild/SPECS ~/rpmbuild/SRPMS
      

      然后将 SPEC 文件复制到~/rpmbuild/SPECS,并构建一个 RPM:

      cp virtual-glibc-provides.spec ~/rpmbuild/SPECS
      cd ~/rpmbuild/SPECS
      rpmbuild -ba virtual-glibc-provides.spec
      

      你会得到这样的输出:

      Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.6Jni5u
      + umask 022
      + cd /home/.../rpmbuild/BUILD
      + exit 0
      Processing files: glib2.14-virtual-provides-2.14-1.x86_64
      Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/.../rpmbuild/BUILDROOT/glib2.14-virtual-provides-2.14-1.x86_64
      Wrote: /home/.../rpmbuild/SRPMS/glib2.14-virtual-provides-2.14-1.src.rpm
      Wrote: /home/.../rpmbuild/RPMS/x86_64/glib2.14-virtual-provides-2.14-1.x86_64.rpm
      Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.YNj8gP
      + umask 022
      + cd /home/.../rpmbuild/BUILD
      + /bin/rm -rf /home/.../rpmbuild/BUILDROOT/glib2.14-virtual-provides-2.14-1.x86_64
      + exit 0
      

      您将拥有/home/.../rpmbuild/RPMS/ 下的RPM,然后您可以使用rpm -ivh ....rpm 安装它。然后您应该能够毫无问题地安装其他软件包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-18
      • 2012-11-23
      • 2019-05-07
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2020-01-03
      相关资源
      最近更新 更多