How To Use Bull Freeware web-site

(some methodology: what it does, and what it does not do)

New (2019/03/11).

This page is aimed to explain the features and limitations of the BullFreeware web-site and how it should be used.
It is a MUST READ.

Except some packages (GCC mainly, but also: CMake & PostgreSQL), all packages built on version N of AIX are compatible with higher versions M > N of AIX. More precisely, all recent packages are built on AIX version N = 6.1 and are thus compatible with AIX 7.1 and 7.2, with any TL (Technical Level ("oslevel -s")). Except the 3 packages listed above.

As an example, version 4.2.1-3 of "make" package (make-4.2.1-3.aix6.1.ppc.rpm) built for AIX 6.1 can be installed on AIX 6.1 , 7.1 or 7.2. Same for "git" version 2.15.1-1 (git-2.15.1-1.aix6.1.ppc.rpm) built for AIX 6.1 .
However, GCC version 8.3 built for AIX 6.1 CANNOT (and should not) be installed on AIX 7.1 nor on AIX 7.2, since each version of GCC is dependent on the header files of the version of AIX where it was built.

Nearly all packages depend on other packages. This list of dependencies appears under: "Known dependencies" when you are ready to download the binary RPMs of a package.
Since the BullFreeware web-site has no idea about which packages are already installed on your machine, it provides you the list of ALL the dependencies of the package you plan to download.
Moreover, since it does not not know which version of each package is installed, it provides you by default the list of the newest version of each package.


Example:
Let say that you need a new package named A, which appears with only one version: v1.1. Package A v1.1 depends on packages B, C (version >= 3.2), and D. And versions B v2.1 & v2.2 , C v3.1 & v3.2 & v3.3 , D v4.2.0 & v4.5.0 are available in BullFreeware repository. The BullFreeware web-site will suggest you as dependencies the newest version of each: B v2.2, C v3.3, and D v4.5.0 . However, you are NOT required to install these newest versions ! You may have a different choice.
Let say that you have packages B v2.0 and C v3.1 installed on your system, but not D.
That means that you do not need to install a new version of B but that you have to install at least version v3.2 of package C and that you need at least D v4.2.0 .
So, about B, either you want to stay with your older version v2.0 or you want to update it to the newest version v2.2.
About C, you can choose amongst v3.2 and v3.3 .
And, about D, why not version 4.5.0 ? It should provide more features and less bugs!

How to choose?
That depends if you want to apply as few changes as possible (minimizing the risk of breaking your environment) or if you are ready to move to the last updated version of each package (which may make new issues appear).

How to know?
I suggest you to first download the new package (or the new version of a package) that you need and to try to install it on your system. The "rpm -i" (or "rpm -U") command will provide you a list of the packages that are missing, possibly with some minimal version. This way, you'll know exactly which new packages (or which new versions of an already installed package) are required.
Then, you may download the full .zip file containing all the suggested dependencies, with the last version for each. Or you may pick some intermediate version if you have special needs. And you choose exactly what you need to install, depending if you want to minimize the risk of breaking the stability of the RPMs installed on your machine or if you are ready to move to a very new version of each dependency.


What difference with "yum" (not available for now)?
Yum is able to know which packages are already installed on your machine. So he is able to know which minimum version of each dependency is required, and it may not propose to update a package if it is already installed and satisfies the requirements of the new package to be installed. However, he will (as BullFreeware does) propose to install the newest version of each missing dependency.


Now, what about the special case of GCC?
As said above, though nearly all other RPMs built on AIX 6.1 can be installed and used on AIX versions greater or equal to 6.1, GCC RPMs can be installed and used on only ONE version of AIX: the version it was built for.
So: "gcc-8.3.0-1 built for aix7.1", aka gcc-8.3.0-1.aix7.1.ppc.rpm RPM binary file, can be installed only on AIX 7.1 . And gcc-8.3.0-1.aix6.1.ppc.rpm can be installed and used only on AIX 6.1 .

Now, since we moved from XLC to GCC for building new packages and new versions of packages, new dependencies have appeared toward GCC sub-packages, like: libgcc, libstdc++ and libgomp.
Thus, if libgcc, libstdc++, or libgomp appear as a dependency of a package on the download page of BullFreeware, their version and their version of AIX are given ONLY as an example. And, by default, it is the last uploaded version of the required GCC libraries that will be displayed.
(real dependencies of an installed package can be shown by command: "rpm -qR ncurses").

As an example, if you need to download and install "ncurses-6.1-1 built for aix6.1" on version 7.2 of AIX, the dependencies of ncurses will be libstdc++ and libgcc. However, the BullFreeware web-site may (wrongly) propose: libstdc++-8.3.0-1.aix6.1.ppc.rpm and libgcc-8.3.0-1.aix6.1.ppc.rpm. That's wrong because libstdc++ & libgcc built for AIX 6.1 CANNOT (and must not) be installed on AIX 7.2 . Morover, though libstc++ & libgcc of GCC v8.3 are proposed, ncurses v6.1-1 is not dependent on this specific version 8.3 of GCC. GCC v4.8.4 or GCC 6.3.0 should be OK too.

So, what should you do?
If libstdc++ and libgcc for any version from (at least) v4.8.4 of GCC up to last available and compatible version (GCC 8.3 for now) are already installed on your machine, you have nothing to do. Try to install ncurses by means of: "rpm -U ncurses" and that'll work fine.
However, if no version of libstdc++ and libgcc is installed on your AIX 7.2 machine, you need to download and install these libraries from a version of GCC built for AIX 7.2. As an example, let say that your company requires to use GCC v6.3.0 for all development, you have to install "libgcc-6.3.0-R built for aix7.2" (only release R=0 exists in that case), like: libgcc-6.3.0-1.aix7.2.ppc.rpm , and "libstdc++-6.3.0-1 built for aix7.2" : libstdc++-6.3.0-1.aix7.2.ppc.rpm.

All GCC versions (at least from 4.8.4 till 8.3 and further) do provide: libstdc++.a(libstdc++.so.6) and libgcc_s.a(shr.o) ) and are compatible.

As a summary:
Unless you haven't already installed a full version of GCC (compiler and libraries), you have to download and install GCC libraries separately and according to your specific needs:
- choose the version of GCC that fits your needs, and
- take the version of AIX for GCC which is the same as the version of your AIX system where you want to install ncurses.