Recently, when installing *Python3* from the *AIX* *toolbox* using *YUM*, we encountered the following error situation:

# yum install python3
...
--> Finished Dependency Resolution
**Error: Package: python3-3.7.1-1.ppc (AIX_Toolbox)**
** Requires: libssl.a(libssl.so.1.0.2)**
**Error: Package: python3-3.7.1-1.ppc (AIX_Toolbox)**
** Requires: libcrypto.a(libcrypto.so.1.0.2)**
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
#

*Python3* requires version *1.0.2* of *libssl.so* and *libcrypto.so*, but the two libraries cannot be found. These two libraries can either be provided via the *RPM* package *openssl*, in the appropriate version, or via *AIX*. When the *AIX* *toolbox* is used, the *openssl* package is typically not installed, and the *AIX* *OpenSSL* libraries are used. Therefore, in our case, the *OpenSSL* *RPM* package is not installed. The libraries are then made available by *BFF* packages of the *AIX* operating system.

The information about which libraries are made available by *AIX* is provided via the virtual *RPM* package *AIX-rpm*:

# rpm -q --provides AIX-rpm | egrep "lib(ssl|crypto)"
libcrypto.a(libcrypto.so)
libcrypto.a(libcrypto.so.0.9.8)
libcrypto.a(libcrypto.so.1.0.0)
libcrypto.a(libcrypto64.so)
libcrypto.a(libcrypto64.so.0.9.8)
libcrypto.a(libcrypto64.so.1.0.0)
libcrypto.so.0.9.7
libcrypto_compat.a(libcrypto.so)
libcrypto_compat.a(libcrypto.so.0.9.8)
libcrypto_compat.a(libcrypto64.so)
libcrypto_compat.a(libcrypto64.so.0.9.8)
libssl.a(libssl.so)
libssl.a(libssl.so.0.9.8)
libssl.a(libssl.so.1.0.0)
libssl.a(libssl64.so)
libssl.a(libssl64.so.0.9.8)
libssl.a(libssl64.so.1.0.0)
libssl3.a(libssl3.so)
libssl3.so
libssl_compat.a(libssl.so)
libssl_compat.a(libssl.so.0.9.8)
libssl_compat.a(libssl64.so)
libssl_compat.a(libssl64.so.0.9.8)
#

The output shows that versions *0.9.8* and *1.0.0* of the two required libraries are known to the *AIX-rpm* package, but the required version *1.0.2* is apparently not available. We take a quick look at the associated archive */usr/lib/libssl.a* (or */usr/lib/libcrypto.a*):

# ar -X any t /usr/lib/libssl.a
libssl.so
libssl.so.0.9.8
libssl.so.1.0.0
libssl.so.1.0.2
libssl.so
libssl.so.0.9.8
libssl.so.1.0.0
libssl.so.1.0.2
libssl64.so
libssl64.so.0.9.8
libssl64.so.1.0.0
#

The archive obviously also provides version *1.0.2*. This information is not provided by the *AIX-rpm* *RPM* package. This is because a newer version of *openssl.base* has obviously been installed, but the *AIX-rpm* package has not been updated. The *RPM* package currently has the following version:

# rpm -q AIX-rpm
AIX-rpm-7.1.5.15-6.ppc
#

We update the package now with the command *updtvpkg* (update virtual package):

# updtvpkg
Please wait...
#
# rpm -q AIX-rpm
AIX-rpm-7.1.5.30-7.ppc
#

The version number has now changed from *7.1.5.15-6* to *7.1.5.30-7*! We can again display which libraries are provided by *AIX* via *AIX rpm*:

# rpm -q --provides AIX-rpm | egrep "lib(ssl|crypto)"
libcrypto.a(libcrypto.so)
libcrypto.a(libcrypto.so.0.9.8)
libcrypto.a(libcrypto.so.1.0.0)
libcrypto.a(libcrypto.so.1.0.2)
libcrypto.a(libcrypto64.so)
libcrypto.a(libcrypto64.so.0.9.8)
libcrypto.a(libcrypto64.so.1.0.0)
libcrypto.so
libcrypto.so.0.9.7
libcrypto.so.1.0.0
libcrypto_compat.a(libcrypto.so)
libcrypto_compat.a(libcrypto.so.0.9.8)
libcrypto_compat.a(libcrypto64.so)
libcrypto_compat.a(libcrypto64.so.0.9.8)
libssl.a(libssl.so)
libssl.a(libssl.so.0.9.8)
libssl.a(libssl.so.1.0.0)
libssl.a(libssl.so.1.0.2)
libssl.a(libssl64.so)
libssl.a(libssl64.so.0.9.8)
libssl.a(libssl64.so.1.0.0)
libssl.so
libssl.so.1.0.0
libssl3.a(libssl3.so)
libssl3.so
libssl_compat.a(libssl.so)
libssl_compat.a(libssl.so.0.9.8)
libssl_compat.a(libssl64.so)
libssl_compat.a(libssl64.so.0.9.8)
#

After the update of the virtual package *AIX-rpm*, the *RPM* database now also contains the version *1.0.2* of *libssl.so* and *libcrypto.so*.

The installation of *Python3* is now successful:

# yum install python3
...
Is this ok [y/N]: y
...
Installed:
python3.ppc 0:3.7.1-1
Dependency Installed:
bzip2.ppc 0:1.0.6-3 expat.ppc 0:2.2.4-1 info.ppc 0:6.4-1 libffi.ppc 0:3.2.1-3 libstdc++.ppc 0:6.3.0-2
ncurses.ppc 0:6.1-2
Dependency Updated:
readline.ppc 0:7.0-5
Complete!
#

Therefore, do not forget to update *AIX-rpm* when updating *BFF* packages!