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

时间:2018-04-01 09:43:17

标签: linux rpm

我正在尝试安装一些需要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依赖项添加自定义路径?

1 个答案:

答案 0 :(得分:1)

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

  1. 使用--nodeps

    如果您已经知道自己拥有所需的一切,那么使用--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
    

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