Oracle Blog

News

Road to AIX Support: First Build Milestone for pkg(5)

Yesterday, August 11, 2009, the Image Packaging System, pkg(5), was compiled and run for the first time on IBM's AIX® 6.1 operating system. All of the API unit tests ran successfully, and 69 of the CLI tests passed. Since I don't have root access on the AIX system being used, the other CLI tests were not expected to pass. AIX support for the command line interfaces is one of the features in the Update Center 2.3 toolkit.

The hardest part about porting pkg(5) to AIX has been to assemble the build environment that is needed to compile the software, especially without root access. Although there are some RPMs available with some of the tools for AIX, these require root access to install. That's one of the nice things about pkg(5) packaging is that it supports user images that do not require root access. Compilation of pkg(5) requires Python, Mercurial, a C compiler, setuputils, pyXML, simplejson, patch, cURL, OpenSSL, and tidy. This list and the instructions for performing the build have been recorded on a project wiki page.

Once the build environment was assembled, modifications to only four files (nine lines) were needed to accomplish the initial port. These changes consisted of modifying the build and test scripts and the utility for getting a canonical operating system name to recognize 'aix' as a valid platform. Work still remains to complete more thorough testing and debugging, packaging of pkg(5) into the toolkit for AIX, and making sure other parts of the toolkit such as the Java API are supported on AIX, but this is a big first step.

With the addition of AIX in the 2.3 release, this expands the multi-platform support for the Image Package System to 5 major platforms (Solaris, Linux, Mac/OS, Windows, and AIX).

Sun supports its software infrastructure products such as Glassfish, Web Space Server, Webstack, MySQL, OpenDS, etc. on multiple operating system platforms. The Image Package System with its support for user images which enable non-root install and multi-install, is a great system for packaging these products. It provides notification of updates, repository-based installation, incremental updates, data collection, and being written mostly in Python, it is relatively easy to port to these other systems. Users get the same interface for managing these products across different platforms.