Consultor Eletrônico



Kbase 18769: ld.so.1: ./_progres: fatal: libclntsh.so.1.0: open failed
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/10/2008
Status: Unverified

FACT(s) (Environment):

Progress 8.3x
Oracle DataServer
Oracle 7.3.3

SYMPTOM(s):

Error: ld.so.1: ./_progres: fatal: libclntsh.so.1.0: open failed: no such file or directory
killed

_progres executable was built with Oracle Shared Libraries

CAUSE:

It is very common to encounter the error in the above scenario.
The problem tends to be associated with user error in the handling of permissions on the newly created executable.

When running Progress Version 8.3 and later and Oracle 7.3.3 and later, Progress takes advantage of Oracle's Shared Libraries. Typically, this type of a problem is not encountered until after the Progress client is successfully built to take advantage of the Oracle Shared Libraries.

When building the Progress client with the local Oracle DataServer, Progress must be able to reference Oracle's shared library (libclntsh.so). Once the executable is built, set the D_LIBRARY_PATH environment variable so that Progress can reference the above library. However, the error arises if the SETUID is enabled on the _progres executable.

For example:

 -rwsrwxr-x   1 root  sys    4321814 Aug  5  1998 _progress

The reason is that the SETUID bit (when it is enabled on an executable) ignores the LD_LIBRARY_PATH and looks for the shared object in /usr/lib by default.


This is not a Progress issue, but it is how SETUID works on most UNIX operating systems.

FIX:

In order to get around this issue, if intending to keep the SETUID enabled on the _progres executable, create a softlink from /usr/lib that points to these shared objects.

For example:

 lrwxrwxrwx root other Oct 24 13:40 libclntsh.so ->/usr/lib/libclntsh.so.1.0