Overview
As noted on the AIX Toolbox for Open Source Software site, the team recommends using DNF to install and manage Open Source software packages and dependencies
*** It is important to review your existing open source environment, and AIX Toolbox documentation before installing DNF.
Error Examples
The following scenario is an example of DNF failures when old and non-AIX Toolbox packages exist prior to installing DNF.
1) Install DNF using the install script.
- https://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/dnf_aixtoolbox.sh
# dnf_aixtoolbox.sh -Y
<...>
dnf installed successfully.
Please run 'dnf update' to update packages to the latest level.
2) Run the update.
# dnf update
Traceback (most recent call last):
File "/opt/freeware/bin/dnf", line 57, in <module>
from dnf.cli import main
File "/opt/freeware/lib/python3.9/site-packages/dnf/__init__.py", line 32, in <module>
import dnf.base
File "/opt/freeware/lib/python3.9/site-packages/dnf/base.py", line 29, in <module>
import libdnf.transaction
File "/opt/freeware/lib/python3.9/site-packages/libdnf/__init__.py", line 3, in <module>
from . import common_types
File "/opt/freeware/lib/python3.9/site-packages/libdnf/common_types.py", line 13, in <module>
from . import _common_types
ImportError: 0509-022 Cannot load module /opt/freeware/lib/libdnf.a(libdnf.so.2).
0509-150 Dependent module /opt/freeware/lib/libcrypto.a(libcrypto.so.1.1) could not be loaded.
0509-152 Member libcrypto.so.1.1 is not found in archive
0509-022 Cannot load module /opt/freeware/lib/python3.9/site-packages/libdnf/_common_types.so.
0509-150 Dependent module /opt/freeware/lib/libdnf.a(libdnf.so.2) could not be loaded.
CAUSE: An old, non-AIX openssl package is installed.
# rpm -qa openssl: openssl-1.0.2s-1.ppc
SOLUTION: Remove the openssl package:
# rpm -e openssl
3) Try the update again.
# dnf update
Traceback (most recent call last):
File "/opt/freeware/bin/dnf", line 57, in <module>
from dnf.cli import main
File "/opt/freeware/lib/python3.9/site-packages/dnf/__init__.py", line 32, in <module>
import dnf.base
File "/opt/freeware/lib/python3.9/site-packages/dnf/base.py", line 29, in <module>
import libdnf.transaction
File "/opt/freeware/lib/python3.9/site-packages/libdnf/__init__.py", line 3, in <module>
from . import common_types
File "/opt/freeware/lib/python3.9/site-packages/libdnf/common_types.py", line 13, in <module>
from . import _common_types
ImportError: 0509-130 Symbol resolution failed for /opt/freeware/lib/libstdc++.a(libstdc++.so.6) because:
0509-136 Symbol _GLOBAL__AIXI_shr_o (number 4) is not exported from
dependent module /opt/freeware/lib/pthread/libgcc_s.a(shr.o).
0509-136 Symbol _GLOBAL__AIXD_shr_o (number 5) is not exported from
dependent module /opt/freeware/lib/pthread/libgcc_s.a(shr.o).
0509-022 Cannot load module /opt/freeware/lib/python3.9/site-packages/libdnf/_common_types.so.
0509-026 System error: Cannot run a file that does not have a valid format.
0509-192 Examine .loader section symbols with the
'dump -Tv' command.
CAUSE: A low level of libgcc is installed.
# rpm -qa libgcc: libgcc-4.8.5-1.ppc
SOLUTION: Remove the libgcc package:
# rpm -e libgcc-4.8.5-1.ppc
4) Try the update again.
# dnf update
Traceback (most recent call last):
File "/opt/freeware/bin/dnf", line 57, in <module>
from dnf.cli import main
File "/opt/freeware/lib/python3.9/site-packages/dnf/__init__.py", line 32, in <module>
import dnf.base
File "/opt/freeware/lib/python3.9/site-packages/dnf/base.py", line 29, in <module>
import libdnf.transaction
File "/opt/freeware/lib/python3.9/site-packages/libdnf/__init__.py", line 3, in <module>
from . import common_types
File "/opt/freeware/lib/python3.9/site-packages/libdnf/common_types.py", line 13, in <module>
from . import _common_types
ImportError: 0509-022 Cannot load module /opt/freeware/lib/python3.9/site-packages/libdnf/_common_types.so.
0509-150 Dependent module libgcc_s.a(shr.o) could not be loaded.
0509-022 Cannot load module libgcc_s.a(shr.o).
0509-026 System error: A file or directory in the path name does not exist.
0509-022 Cannot load module /opt/freeware/lib/python3.9/site-packages/libdnf/_common_types.so.
0509-150 Dependent module /opt/freeware/lib/python3.9/site-packages/libdnf/_common_types.so could not be loaded.
CAUSE: The DNF install of libdnf did not create /opt/freeware/libdnfdeps/libgcc_s.a, since libgcc was already installed.
Now the libgcc_s.a was removed, so there is a new libgcc error.
SOLUTION: Force overwrite the libdnf.
# rpm -ivh --force libdnf-0.39.1-32_3.aix7.1.ppc.rpm
5) Try the update again
# dnf update
Last metadata expiration check: 0:02:29 ago on Wed Oct 16 14:22:25 CDT 2024.
Dependencies resolved.
=========================================================================================================
Package Architecture Version Repository Size
=========================================================================================================
Upgrading:
ca-certificates ppc 2024.2.66-1 AIX_Toolbox_local 1.0 M
libcomps ppc 0.1.15-101 AIX_Toolbox_local 622 k
libmodulemd ppc 1.5.2-100 AIX_Toolbox_local 1.2 M
librepo ppc 1.11.0-103 AIX_Toolbox_local 336 k
libsmartcols ppc 2.34-101 AIX_Toolbox_local 614 k
libzstd ppc 1.5.2-3 AIX_Toolbox_local 1.5 M
p11-kit ppc 0.24.1-1 AIX_Toolbox_local 3.7 M
p11-kit-tools ppc 0.24.1-1 AIX_Toolbox_local 203 k
python3 ppc 3.9.20-1 AIX_Toolbox_local 9.0 k
python3-gpg ppc 1.13.1-101 AIX_Toolbox_local 7.1 k
python3-libcomps ppc 0.1.15-101 AIX_Toolbox_local 15 k
python3-librepo ppc 1.11.0-103 AIX_Toolbox_local 13 k
python3.9 ppc 3.9.20-1 AIX_Toolbox_local 40 M
python3.9-gpg ppc 1.13.1-101 AIX_Toolbox_local 1.7 M
python3.9-libcomps ppc 0.1.15-101 AIX_Toolbox_local 589 k
python3.9-librepo ppc 1.11.0-103 AIX_Toolbox_local 223 k
zchunk-libs ppc 1.1.4-103 AIX_Toolbox_local 824 k
dnf ppc 4.2.17-32_51 AIX_Toolbox_72_local 14 k
dnf-automatic ppc 4.2.17-32_51 AIX_Toolbox_72_local 12 k
dnf-data ppc 4.2.17-32_51 AIX_Toolbox_72_local 24 k
libdnf ppc 0.39.1-32_52 AIX_Toolbox_72_local 2.3 M
libsolv ppc 0.7.9-32_53 AIX_Toolbox_72_local 672 k
python3-dnf ppc 4.2.17-32_51 AIX_Toolbox_72_local 8.0 k
python3-hawkey ppc 0.39.1-32_52 AIX_Toolbox_72_local 23 k
python3-libdnf ppc 0.39.1-32_52 AIX_Toolbox_72_local 23 k
python3.9-dnf ppc 4.2.17-32_51 AIX_Toolbox_72_local 193 k
python3.9-hawkey ppc 0.39.1-32_52 AIX_Toolbox_72_local 409 k
python3.9-libdnf ppc 0.39.1-32_52 AIX_Toolbox_72_local 2.2 M
Installing dependencies:
bash ppc 5.2.21-1 AIX_Toolbox_local 3.0 M
bzip2 ppc 1.0.8-2 AIX_Toolbox_local 238 k
check ppc 0.13.0-1 AIX_Toolbox_local 93 k
curl ppc 8.9.1-1 AIX_Toolbox_local 2.0 M
cyrus-sasl ppc 2.1.28-1 AIX_Toolbox_local 1.2 M
db ppc 1:5.3.28-1 AIX_Toolbox_local 17 M
expat ppc 2.6.3-1 AIX_Toolbox_local 855 k
gdbm ppc 1.23-1 AIX_Toolbox_local 283 k
gettext ppc 0.21-2 AIX_Toolbox_local 14 M
glib2 ppc 2.81.0-1 AIX_Toolbox_local 16 M
gmp ppc 6.3.0-1 AIX_Toolbox_local 1.0 M
gnupg2 ppc 2.4.3-1 AIX_Toolbox_local 9.9 M
gnutls ppc 3.8.2-1 AIX_Toolbox_local 4.4 M
gpgme ppc 1.13.1-101 AIX_Toolbox_local 518 k
info ppc 7.0.2-1 AIX_Toolbox_local 643 k
json-c ppc 0.17-1 AIX_Toolbox_local 381 k
krb5-libs ppc 1.21.3-1 AIX_Toolbox_local 7.5 M
libassuan ppc 2.5.6-1 AIX_Toolbox_local 332 k
libffi ppc 3.4.4-2 AIX_Toolbox_local 73 k
libgcrypt ppc 1.10.3-1 AIX_Toolbox_local 2.7 M
libgpg-error ppc 1.49-1 AIX_Toolbox_local 515 k
libiconv ppc 1.17-1 AIX_Toolbox_local 1.6 M
libksba ppc 1.6.3-1 AIX_Toolbox_local 932 k
libnghttp2 ppc 1.62.1-1 AIX_Toolbox_local 311 k
libssh2 ppc 1.11.0-1 AIX_Toolbox_local 975 k
libtasn1 ppc 4.19.0-1 AIX_Toolbox_local 227 k
libtextstyle ppc 0.21-2 AIX_Toolbox_local 1.1 M
libunistring ppc 1.1-1 AIX_Toolbox_local 3.0 M
libxml2 ppc 2.12.9-1 AIX_Toolbox_local 3.1 M
libyaml ppc 0.2.5-1 AIX_Toolbox_local 509 k
ncurses ppc 6.4-1 AIX_Toolbox_local 3.8 M
nettle ppc 3.9.1-1 AIX_Toolbox_local 3.1 M
npth ppc 1.5-1 AIX_Toolbox_local 220 k
openldap ppc 2.5.16-1 AIX_Toolbox_local 4.0 M
pcre2 ppc 10.40-1 AIX_Toolbox_local 1.3 M
readline ppc 8.2-1 AIX_Toolbox_local 2.3 M
sqlite ppc 3.45.3-1 AIX_Toolbox_local 11 M
xz-libs ppc 5.4.3-1 AIX_Toolbox_local 575 k
zlib ppc 1.2.13-1 AIX_Toolbox_local 345 k
libgcc ppc 1:10-2 AIX_Toolbox_72_local 15 k
libgcc10 ppc 10.3.0-6 AIX_Toolbox_72_local 793 k
libgomp ppc 1:10-2 AIX_Toolbox_72_local 14 k
libgomp10 ppc 10.3.0-6 AIX_Toolbox_72_local 2.0 M
libstdc++ ppc 1:10-2 AIX_Toolbox_72_local 14 k
libstdc++10 ppc 10.3.0-6 AIX_Toolbox_72_local 19 M
Installing weak dependencies:
pinentry ppc 1.0.0-1 AIX_Toolbox_local 115 k
Transaction Summary
=====================================================================================================
Install 46 Packages
Upgrade 28 Packages
Total size: 202 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Error: Transaction test error:
file /opt/freeware/lib/libdb-4.8.a from install of db-1:5.3.28-1.ppc conflicts with file from package db4-4.8.30-1.ppc
file /opt/freeware/lib/libdb-4.8.so from install of db-1:5.3.28-1.ppc conflicts with file from package db4-4.8.30-1.ppc
file /opt/freeware/lib/libdb.a from install of db-1:5.3.28-1.ppc conflicts with file from package db4-4.8.30-1.ppc
file /opt/freeware/lib64/libdb-4.8.so from install of db-1:5.3.28-1.ppc conflicts with file from package db4-4.8.30-1.ppc
CAUSE: An old, non-Toolbox db4 package exists.
# rpm -qa db4
db4-4.8.30-1.ppc
SOLUTION: This does not cause issues for DNF, but if this was installed for other non-Toolbox packages, there might be conflicts. The administrator will need to evaluate any pre-DNF or non-AIX packages and remove or force overwrite as needed.
Summary
The described errors are only basic examples of the most common issues experienced when packages exist prior to AIX DNF installation, espeically if they are packages that are not provided by IBM, yet provide the same files as a newer package from the Toolbox. These issues highlight the importance of Open Source software maintenance planning.
Best practices include:
- Review the AIX Toolbox Community forum, blog and technical announcements prior to AIX udpates.
- Use DNF to manage your package dependencies.
- Remove non-Toolbox packages that conflict with AIX Toolbox packages.
- Do not set a global LIBPATH.
- Do not create links in /usr, or relink files in /opt/freeware.
- Avoid using "rpm --nodeps" to force installations or removals.