rpm 报告依赖项缺失,但它存在?

rpm 报告依赖项缺失,但它存在?

我想安装这个rpm(当然我可以安装它,-nodeps但我不喜欢这个“解决方案”)。

LANG=C rpm -Uvh /home/pippiripi/rpmbuild/RPMS/x86_64/oracle-fdw-27012018git-1.el7.centos.x86_64.rpm 
error: Failed dependencies:
    libclntsh.so.12.1()(64bit) is needed by oracle-fdw-27012018git-1.el7.centos.x86_64

当然libclntsh.so.12.1是在系统上:

ldconfig -p|grep libclntsh.so.12.1
    libclntsh.so.12.1 (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1

并且它的 rpm 已安装:

rpm -qf /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64

该库是64位的

 file /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1
/usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=068dc0a57c8b0310180f2a659b71de4115ba9020, not stripped

解决方案?

答案1

问题出现因为“即时客户端”包根本没有列出库Provides:

这在专有软件包中非常常见,但公平地说,它并没有将这些库安装在通常的位置,并且在大多数情况下Provides:无论如何都会误导它们。

您最好的解决方案可能是禁用.specfdw 包中的自动要求/提供处理,并手动添加Requires:BuildRequires:列出“即时客户端”包(我猜,> =您构建的任何版本)。

答案2

您的系统上安装的库是 32 位版本。您正在尝试安装 64 位 rpm(您可以在名称中看到:oracle-fdw-27012018git-1.el7.centos)。x86_64.rpm ),这需要同一库的 64 位版本。依赖项不仅仅是 libclntsh.so.12.1 而是 libclntsh.so.12.1()(64位)

所以要么找到 32 位版本的 oracle-fdw;您应该安装 64 位版本的 oracle-instantclient12.2-basic。

编辑:你应该搜索一个提供的包libclntsh.so.12.1()(64位)。显然你的 oracle-instantclient12.2-basic 版本没有。要检查你的系统:rpm -q --whatprovides "libclntsh.so.12.1()(64bit)"这可能不会产生任何结果......所以你必须搜索提供该功能的 rpm。最好使用包管理器,例如yumzypper谁将为您管理这些依赖项。

相关内容