Frequently Asked Questions - AIX Toolbox for Linux Applications Updated Nov 17, 2016 Table of Contents General 1. Is there a mailing list? 2. How do I report a bug? 3. How do I request that a tool be added to the Toolbox? 4. Why isn't my favorite tool in the Toolbox? 5. Why aren't the tools in installp format? 6. Many of these tools have been available on AIX for years. Why the Toolbox? 7. Is there a list of known problems? 8. How often will the contents of the Toolbox be updated? 9. I requested an application a long time ago, and it still isn't in the Toolbox. Why not? 10. How does library versioning work in the AIX Toolbox? RPM 1. Why does rpm.rte take so long to install? 2. Where can I find more information on using rpm? 3. I have gtk+ installed but I can't link to it? Why not? 4. I downloaded an RPM, but rpm won't install it. Why not? 5. rpm won't install an RPM because it is missing a dependency. How do I find out how to resolve that dependency? 6. I installed a shared library using installp, but RPM does not recognize that the support is installed. What do I do? 7. How do I remove all of this stuff? 8. What is the purpose of the AIX-rpm package that I see installed? 9. I have AIX 5.2, but the rpm I want has "aix4.3.ppc" in the name. Is there a version for 5.2? 10. What's info? ------------------------------------------------------------------------ General 1. Q: Is there a mailing list? A: There is no mailing list but there is a forum for AIX open source. http://ibm.biz/aixoss_forum You may subscribe to the forum and you will get notifications. 2. Q: How do I report a bug? A: You can report a bug or issue on the above AIX open source forum. Remember, the images are "as-is" so there is no guarantee that any given bug will be worked on. If you have a suggested fix to your bug, or to any other bug on the list, feel free to post your solution. This increases the chance that the fix will be incorporated. 3. Q: How do I request that a tool be added to the Toolbox? A: It is very similar to reporting a bug as above. Be forewarned, the Toolbox content is generally expanded with due cosideration and resource availability. Hence few such requests will be fulfilled. Better to use the Toolbox tools and build the packages that you desire. 4. Q: Why isn't my favorite tool in the Toolbox? A: There are thousands of open source tools in the world. The Toolbox is meant to provide a core set of some of the most common tools, particularly development tools and libraries plus a few other miscellaneous popular packages. By providing core development tools, the Toolbox provides the infrastructure for users to build a wide variety of other open source packages that may be desired. 5. Q: Why aren't the tools in installp format? A: RPM is a common packaging system on Linux platforms (though it is not on every Linux platform) and most popular open source projects are available as source RPMS (SRPMS), making it relatively straightforward to build new packages for the Toolbox. 6. Q: Many of these tools have been available on AIX for years. Why the Toolbox? A: The Toolbox is provided as a convenience to AIX customers. Every The Toolbox provides common development tools which help customers build a wide variety of open source packages beyond what the Toolbox itself offers. 7. Q: Is there a list of known problems? A: The reported bugs and issues are accessible via the forum page at https://www.ibm.com/developerworks/community/forums/html/forum?id=2eb0f36d-9534-471b-8b27-c21e6c5b9b2b&ps There are also some known problems listed in the README. 8. Q: How often will the contents of the Toolbox be updated? A: The current plans are to update the packages once or twice a year. This also depends on how frequently a packages is getting updated in the community, if there is no new release of a package then it will not be updated. Also we will update selected packages for security vulnerability and hence sometimes for those packages update can be more than twice in a year. 9. Q: I requested an application a long time ago, and it still isn't in the Toolbox. Why not? A: Could be any number of reasons. It could be a legal issue (the license may have problems, or there may be some suspect copyrights or potential patent infringements). It could be a priority issue (e.g. an app that doesn't appear on major Linux distributions has much less value in what is, after all, a "Toolbox for Linux Applications"; or it may be functionally similar to something else already in AIX or the Toolbox). We encourage you to download such apps that you want yourself and build yourself a copy. There is nothing special we do to build the images that could not be done outside of IBM on a system with the Toolbox. 10. Q: How does library versioning work in the AIX Toolbox? A: (This is a technical question which may not be of interest to general users). Due to some differences between linking on AIX and Linux, the creation of shared objects & shared libraries is handled a little differently. In the AIX Toolbox, a shared object is created and then archived into a shared library. (A shared library is simply an archive library with at least one shared object as a member). So if you have a shared object named libfoo.so.0, in the AIX Toolbox you will find it inside the archive libfoo.a, and when linking and executing a binary, the necessary symbols will be found within that shared object, which is written as libfoo.a(libfoo.so.0). Ideally, most updates of packages to new versions will be completely compatible with earlier versions. When compatibility is preserved, the library version does not need to change; that way, something linked against an older libfoo.a(libfoo.so.0) will continue to execute cleanly with a newer libfoo.a(libfoo.so.0) when the example package updates to a newer version. Unfortunately, a package will occasionally break compatibility with older versions of its libraries. When this happens, a problem arises: if you simply replace the old libfoo.so.0 in libfoo.a, older applications using the old version may stop working. To get around this, the package creates a new version of the shared object, libfoo.so.1. Now, newer applications can use the new version ".so.1", while older applications can continue using version ".so.0". This works because the libfoo.a library is now created with both members inside. But how do newly linked applications know which shared object member to use? This is handled by setting the LOADONLY flag in the older shared object. With this flag set, the object can continue to be loaded by applications that need it, but the linker will know to ignore this older object. You can see whether the flag is set or not with the "dump -ov [filename]" command. For info on changing the LOADONLY flag, see the manual page for the AIX "strip" command. Some packages avoid this whole versioning issue by creating a completely new and separate package version. For a real example, consider the "libxml" package and the "libxml2" package. Because they are not compatible, a new package was created with a new archive name: libxml.a versus libxml2.a. Because the package used this approach, versioning of the original library was not needed. RPM 1. Q: Why does rpm.rte take so long to install? A: rpm generally handles dependencies between packages by auto-detecting shared library requirements. It uses its own database to determine the shared library support provided on the system. The /usr/sbin/updatevpg program is run at rpm.rte installation time to add information about shared libraries installed via installp into the RPM database. /usr/sbin/updtvpkg examines every file delivered by installp to determine if it provides shared library support and that can take quite a while on older systems or on systems where many installp packages have been installed. See question #8 below for more in depth. 2. Q: Where can I find more information on using rpm? A: For basic information, run rpm --help. For detailed information, particularly if you want to produce your own RPMs, the best source of information is the rpm home page, http://www.rpm.org. Of particular interest is the useful book "Maximum RPM" by Edward Bailey, which can be found online at http://www.rpm.org/max-rpm/. 3. Q: I have gtk+ installed but I can't link to it? Why not? A: gtk+ and several other libraries had to be built with run-time linking enabled. In order to link with libraries which have been built using run-time linking, specify the -brtl flag to the linker. In some Makefiles and configure steps, this is done by setting LDFLAGS="-Wl,-brtl". If a library is available with a .so extension rather than a .a extension, then it was built using run-time linking support. run-time linking techniques are generally used when dependencies between shared objects cannot be easily resolved at link time. 4. Q: I downloaded an RPM, but rpm won't install it. Why not? A: It was probably corrupted during the download. Make sure that you downloaded it in binary form. 5. Q: rpm won't install an RPM because it is missing a dependency. How do I find out how to resolve that dependency? A: There is an RPM search facility at http://rpmfind.net which can help you determine which package provides a particular file or shared library. But a better way is to install YUM on AIX from Toolbox. YUM automatically resolve package's dependencies and install the dependent packages with the requested package. To install YUM on AIX you can refer https://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/README-yum 6. Q: I installed a shared library using installp, but RPM does not recognize that the support is installed. What do I do? A: Run /usr/sbin/updtvpkg. 7. Q: How do I remove all of this stuff? A: Use the destroyRPMS script available on the FTP site. https://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/contrib/destroyRPMS It will remove all installed rpms, followed by rpm itself. Or, to deinstall individual rpms, run "rpm -e ". 8. Q: What is the purpose of the AIX-rpm package that I see installed? A: See also rpm question #1 above. The "AIX-rpm" package doesn't actually install anything, and in general you can just ignore it (but DO NOT deinstall it!). It is a "virtual package", created by /usr/sbin/updtvpkg when rpm.rte itself is installed. It is also regenerated any time you rerun updtvpkg. So what is it for? Rpm keeps a database of every installed package and the files provided by each package. However, rpm has no knowledge about the installp-format installed images, meaning it is not naturally aware of the files that make up the AIX operating system itself. This presents a dependency problem: most binary rpm packages depend on basic AIX libraries like libc.a, but rpm is not aware that these libraries are available because they are not provided by any rpm package. AIX-rpm solves this problem. The updtvpkg script scans all installed installp-format images for available shared libraries and shells, and then it creates the AIX-rpm package which tells rpm that these libraries are indeed available. Thus, rpm thinks that AIX-rpm provides libc.a, though technically it is provided by AIX itself. Then when an rpm package is being installed that requires libc.a (as most do), rpm knows that the requirement is met because it finds it in AIX-rpm. If you are curious to see everything AIX-rpm "provides" on behalf of the AIX system, you can run "rpm -q --provides AIX-rpm". 9. Q: I have AIX 7.2, but the rpm I want has "aix6.1.ppc" in the name. Is there a version for 7.2? A: That same image is also for AIX 7.2. Because of binary compatibility, an RPM image built on AIX 6.1 will install and run on AIX 6.1, AIX 7.1, and AIX 7.2. The only exception is gcc. gcc package is built for different AIX version separately. 10. Q: What's info? A: info is a documentation system common to Linux. Some applications install information into the info system rather than provide man pages.