4

I have a self-created rpm for mapserver 6.2.1 that I want to support Oracle, but I am having a lot of difficulties getting it all to work.

I have installed the oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64 as an rpm, and the sdk and sqlplus as zip files in my ORACLE_HOME. This seemed to be the only way to ensure the sdk files is at the correct location, for mapserver to recognize.

So my mapserver rpm builds but when I try to install it on the build server, it complains:

Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mapserver.x86_64 0:6.2.1-2 will be updated
--> Processing Dependency: mapserver = 6.2.1-2 for package: mapserver-perl-6.2.1-2.x86_64
--> Processing Dependency: mapserver = 6.2.1-2 for package: mapserver-python-6.2.1-2.x86_64
---> Package mapserver.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-6.2.1-12.el6.x86_64
--> Running transaction check
---> Package mapserver.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-6.2.1-12.el6.x86_64
---> Package mapserver-perl.x86_64 0:6.2.1-2 will be updated
---> Package mapserver-perl.x86_64 0:6.2.1-12.el6 will be an update
---> Package mapserver-python.x86_64 0:6.2.1-2 will be updated
---> Package mapserver-python.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-python-6.2.1-12.el6.x86_64
--> Finished Dependency Resolution
Error: Package: mapserver-6.2.1-12.el6.x86_64 (geodata)
       Requires: libclntsh.so.12.1()(64bit)
Error: Package: mapserver-python-6.2.1-12.el6.x86_64 (geodata)
       Requires: libclntsh.so.12.1()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

Obviously libclntsh.so.12.1 is already installed through yum and located at the exact same spot as when the package was built.

What am I doing wrong?

  • I've seen this when it's 64bit but needs a symlink to the 32bit library. – Jeight May 20 '16 at 22:22
3

Confirm part of RPM

This looks like yum/RPM is complaining because a requirement has not been met. I would typically use this command to confirm that files are under the control of RPM.

$ locate libclntsh

If this returns a path, then check with RPM to see if it controls it:

$ rpm -qf <path from locate command>

If RPM doesn't control this file, it doesn't matter if it's on the system, from RPM's perspective it isn't installed.

Similar issue?

I came across this thread which looks to be identical to the issue you are having. The only tangible suggestion from that thread is to make sure that the files you're working with are on the local system. I don't think that's your issue but have a look at the thread anyway, might shed some light for you.

  • Using your suggested commands, it seems like the file is in oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64, so it should be controlled by rpm. – Jesper Kihlberg Sep 13 '13 at 12:15
  • @JesperKihlberg - see update. – slm Sep 13 '13 at 12:51
  • All my files are on the local system, so that doesn´t seem to shed any light on my issue. – Jesper Kihlberg Sep 14 '13 at 7:11
  • 1
    @JesperKihlberg - glad to hear you resolved this. Would you mind adding the directory structure output to the Q so I could see exactly how it was created and how it looked afterwards? – slm Sep 27 '13 at 9:47
  • 1
    The oracle instant client RPMs have had this issue for years. No, I'm not exaggerating. I've seen this issue as far back as 5 years ago. They apparently still haven't fixed it. Many people end up repackaging the instant client RPMs to fix it. – Patrick Mar 30 '14 at 9:15
0

Actually your question is two-fold. This is not an issue whether a file libclntsh.so.12.1 is installed on your box, but whether any package from any currently enabled repository provides a facility 'libclntsh.so.12.1()(64bit)'

So query that via yum whatprovides 'libclntsh.so.12.1()(64bit)' and you will see if any package provides this. Maybe you disabled one repository?


The other part of the question "why does yum continue to complain" : because yum by default will always run a yum check to ensure consistency of rpm database and report any conflicts or missing dependencies. This is tightly coupled to the transaction history yum keeps and can be disabled, although with a lot of sideeffects. Check man yum.conf and the option history_record

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.