The ldd command can be used to show the shared libraries required by any given program.
It is useful for figuring out when there is a missing dependency and it can be used to list missing functions and objects.
Starting the Apache fails after installation of the Web Agent, with the following output:
Ignoring invalid environment assignment 'export PATH=/{home_policy_server}/bin:$PATH': /etc/sysconfig/httpd
Starting The Apache HTTP Server...
httpd: Syntax error on line 56 of /{home_web_server}/conf/httpd.conf: Cannot load /{home_web_agent}/bin/libmod_sm24.so into server: libsmerrlog.so: cannot open shared object file: No such file or directory
httpd.service: main process exited, code=exited, status=1/FAILURE
Ignoring invalid environment assignment 'export PATH=/{home_web_agent}/bin:$PATH': /etc/sysconfig/httpd
kill: cannot find process ""
httpd.service: control process exited, code=exited status=1
Failed to start The Apache HTTP Server.
Unit httpd.service entered failed state.
httpd.service failed.
How to determine which library is missing?
Verify SELinux has been disabled.
To check that the shared library requirements have been installed, run the ldd command on the file and path where the Web Agent was installed.
For instance:
# ldd /{home_web_agent}/bin/libmod_sm24.so
Look for the "not found" messages in the output.
x-vdso.so.1 => (0x00007ffedd1fb000)
libsmerrlog.so => /{home_web_agent}/bin/libsmerrlog.so (0x00007fd333460000)
libsmeventlogger.so => /{home_web_agent}/bin/libsmeventlogger.so (0x00007fd333358000)
libsmcommonutil.so => /{home_web_agent}/bin/libsmcommonutil.so (0x00007fd3331cf000)
libsmi18n.so => not found
libicudata.so.49 => /{home_web_agent}/bin/libicudata.so.49 (0x00007fd331e1b000)
libicui18n.so.49 => /{home_web_agent}/bin/libicui18n.so.49 (0x00007fd331af0000)
libicuio.so.49 => not found
libicuuc.so.49 => /{home_web_agent}/bin/libicuuc.so.49 (0x00007fd33175c000)
libSmXlate.so => /{home_web_agent}/bin/libSmXlate.so (0x00007fd3315fd000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd3313d9000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fd3311d4000)
librt.so.1 => /lib64/librt.so.1 (0x00007fd330fcc000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fd330cc4000)
Note that on many of the other lines the => symbol followed by a path.
This is the path to the physical binary.
The hex number is the address where the library will be loaded.
Note also two of the lib files are marked with "not found".