Tips for resolving unmet dependencies

You must meet all of the Cloud APM server dependencies for a successful installation.

Resolving RPM dependency failures

The Cloud APM server uses Red Hat Package Manager (RPM) files to install the software. Without the required libraries and other software, the prerequisite scanner fails and displays a failure explanation, such as:
Expected                Property                Result      Found
regex(libstdc++.so.6    os.lib.libstdc++_32     FAIL        Unavailable   

A Red Hat® Enterprise Linux® client that is correctly configured to use the yum (Yellowdog Updater, Modified) package manager can resolve and install any missing dependencies that are required by the RPMs. For more information about yum commands, see What is yum? How do I use it?.

When the prerequisite scanner returns errors because of failed dependencies, you can run the yum provides feature_name command to learn what is required, and the yum install feature_name command to install the missing dependency. For example:
Error
The prerequisite scanner shows the following failure message:
error: Failed dependencies:
libstdc++.so.6 is needed by...
Command yum provides
Enter the following command:
yum provides libstdc++.so.6
The following report is displayed:
libstdc++-4.4.7-3.el6.i686 : GNU Standard C++ Library
Repo        : installed
Matched from:
Other       : Provides-match: libstdc++.so.6
Command yum install
Enter the following command to satisfy the missing feature:
yum install libstdc++-4.4.7-3.el6.i686
Command yum install
Enter the following command to install all prerequisites:
yum -y install --setopt=protected_multilib=false ksh libstdc++.i686 pam.i686 pam.x86_64 sg3_utilsbc bc rsync lsof net-tools unzip zip nmap libaio
Table 1 displays some of the failure message you might see for missing files and libraries on Linux and the RPM that you can install to resolve them.
Table 1. Sample error messages for failed dependencies on Linux and the possible resolution RPM
Failure message Possible resolution
error: Failed dependencies: libstdc++.so.6 is needed by... rpm -Uhv libstdc++-4.4.6-4.el6.i686.rpm
error: Failed dependencies:
      libgcc_s.so.1 is needed by libstdc++-4.4.6-4.el6.i686
      libgcc_s.so.1(GCC_3.0) is needed by libstdc++-4.4.6-4.el6.i686
      libgcc_s.so.1(GCC_3.3) is needed by libstdc++-4.4.6-4.el6.i686
      libgcc_s.so.1(GCC_4.2.0) is needed by libstdc++-4.4.6-4.el6.i686
      libgcc_s.so.1(GLIBC_2.0) is needed by libstdc++-4.4.6-4.el6.i686
rpm -Uhv libgcc-4.4.6-4.el6.i686.rpm
error: Failed dependencies: compat-libstdc++-33(i686) is needed by... rpm -Uhv compat-libstdc++-33-3.2-69.el6.i686.rpm

Resolving maximum number of user processes, open files, and core file dependency failures

Limits are set on the maximum number of user processes, the maximum number of open files, and maximum size of a core file on the system where you plan to install the Cloud APM server. For the limits, see Cloud APM server prerequisites. You might want to check or change these limits.
Important: You must set or change the limits permanently rather than for the current shell session only by editing the /etc/security/limits.conf file. Then, the changes are applied to new sessions and processes. You must reboot your system to ensure that the changes occur. A suggested setup for the /etc/security/limits.conf file is shown here:
* soft nofile 32768
* hard nofile 65536
* soft  core  unlimited
Attention: If you use the following ulimit commands to set or change the ulimits, the updates are only temporary for the current user session.

To check the current system limits, enter the following commands:

  • ulimit -a returns all limits
  • ulimit -u returns the maximum number of processes available to a single user
  • ulimit -n returns the maximum number of open file descriptors
  • ulimit -c returns the maximum core file size

To increase the limit for the current shell session, enter the following commands:

  • ulimit -u new_limit sets the maximum number of processes. Example: ulimit -u 4096
  • ulimit -n new_limit sets the maximum number of open files descriptors. Example: ulimit -n 32768
  • ulimit -c new_limit sets the maximum core file size. Example: ulimit -c 390000

Resolving IPv4 and IPv6 protocol dependencies in the loopback interface

If localhost is defined for the IPv4 and IPv6 interfaces in /etc/hosts, but the IPv4 and/or IPv6 protocols are disabled in the loopback interface, then the prerequisite scanner test will fail.

For example, the prerequisite scanner displays the following result:

Property                           Result    Found    Expected
========                           ======    =====    ========
network.loopbackMatchesHosts.ipv6  FAIL      False    True

This result indicates that the IPv4 and IPv6 protocols in the loopback interface do not match the values for localhost in the /etc/hosts file. To fix this issue, you can either remove the IPv4/IPv6 localhost definition in the hosts file, or else enable the IPv4/IPv6 protocol in the loopback interface.

To check to see if the IPv4 and IPv6 protocols are defined in the loopback interface, run ifconfig for your loopback interface. For example, if your loopback interface is called lo, run the command ifconfig lo in the terminal.

To remove the IPv4/IPv6 localhost definition from the hosts file, complete the following steps:

  1. Open the /etc/hosts file for editing.
  2. Locate the lines that contain the defined values for your IPv4 and IPv6 interfaces. For example,
    127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1  localhost localhost.localdomain localhost6 localhost6.localdomain6
  3. Remove the words localhost and localhost.localdomain from the line that contains the IPv4 or IPv6 interface that caused the prerequisite scanner to fail. For example, change the following line:
    ::1  localhost localhost.localdomain localhost6 localhost6.localdomain6
    to
    ::1  localhost6 localhost6.localdomain6
  4. Save your updated hosts file and reboot your machine.
To enable the IPv4 or IPv6 protocol on the loopback interface, run the appropriate command:
  • To enable the IPv4 protocol, run the following command:
    sysctl -w net.ipv4.conf.Io.disable_ipv4=0
    where Io is the name of your loopback interface.
  • To enable the IPv6 protocol, run the following command:
    sysctl -w net.ipv6.conf.Io.disable_ipv6=0
    where Io is the name of your loopback interface.
After enabling the protocol, reboot your machine.