이 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:
오해를 불러일으킵니다.
가장 좋은 해결책은 아마도 .spec
fdw 패키지에서 자동 요청/제안 처리를 비활성화하고 "인스턴트 클라이언트" 패키지를 수동으로 추가 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을 검색해야 합니다. 이러한 종속성을 관리해 줄 yum
패키지 관리자를 사용하는 것이 더 좋습니다 .zypper