Nicht vergessen AIX-rpm zu aktualisieren

Kürzlich, bei der Installation von Python3 aus der AIX-Toolbox mittels YUM, sind wir auf folgende Fehlersituation gestoßen:

# 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 benötigt die Version 1.0.2 von libssl.so und libcrypto.so, die beiden Libraries können aber nicht gefunden werden. Diese beiden Bibliotheken können entweder über das RPM-Paket openssl, in der passenden Version, bereitgestellt werden oder über AIX. Wenn die AIX-Toolbox verwendet wird, wird typischerweise das Paket openssl nicht installiert, sondern es werden die OpenSSL-Bibliotheken von AIX genutzt. Daher ist in unserem Fall das OpenSSLRPM-Paket nicht installiert. Die Bibliotheken werden dann über BFF Pakete des AIX Betriebssystems zur Verfügung gestellt.

Die Information, welche Libraries von AIX zur Verfügung gestellt werden, wird über das virtuelle RPM-Paket AIX-rpm bereitgestellt:

# 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)
#

Die Ausgabe zeigt, das dem Paket AIX-rpm die Versionen 0.9.8 und 1.0.0 der beiden benötigten Bibliotheken bekannt sind, die benötigte Version 1.0.2 ist aber anscheinend nicht verfügbar. Wir schauen kurz in das zugehörige Archiv /usr/lib/libssl.a (bzw. /usr/lib/libcrypto.a) herein:

# 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
#

Das Archiv stellt offensichtlich auch die Version 1.0.2 zur Verfügung. Diese Information wird aber über das RPM-Paket AIX-rpm nicht geliefert. Das liegt daran, das offensichtlich eine neuere Version von openssl.base installiert wurde, das AIX-rpm Paket aber nicht aktualisiert wurde. Das RPM-Paket hat aktuell die folgende Version:

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

Wir aktualisieren das Paket jetzt mit dem Kommando updtvpkg (update virtual package):

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

Die Versionsnummer hat sich jetzt von 7.1.5.15-6 auf 7.1.5.30-7 geändert! Wir lassen uns erneut anzeigen, welche Libraries von AIX über AIX-rpm bereitgestellt werden:

# 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)
#

Nach der Aktualisierung des virtuellen Pakets AIX-rpm, steht jetzt auch in der RPM-Datenbank das libssl.so und libcrypto.so auch in der Version 1.0.2 verfügbar sind.

Die Installation von Python3 verläuft jetzt erfolgreich:

# 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!
#

Daher bei Updates von BFF Paketen die Aktualisierung von AIX-rpm nicht vergessen!