Linux Application Checker Brings Distro Help
Linux application development has always been a tricky business. Although Linux is a solid platform, it is often hard for independent software vendors to develop and maintain packages for all distributions. In response, the Linux Foundation this month released an open beta of Linux Application Checker (AppChecker). The utility, now at Beta 3, helps work through differences between Ubuntu, SuSE, Fedora, and more.
AppChecker is designed to test the compatibility of a binary package (.rpm or .deb) or source (tar.bz2 or tar.gz) with various Linux distributions. Perl, Python and shell scripts are also supported. After AppChecker finishes, the developer is presented with a compatibility report of the software across the various Linux distros.
According to Amanda MacPherson, vice president of the Linux Foundation, AppChecker is not meant to give a "thumbs up" or "thumbs down" on a particular distro. Instead, it provides information needed to get the program running on each Linux version. Packages are checked against the Linux Standard Base (LSB) for each distro, and if the check is successful, developers are able to apply for LSB certification.
The test results can be shared with the Linux Foundation, and that helps everyone, according to MacPherson.
"If you choose to share your results with us, it helps the Linux platform and helps the LSB get better. For example, it tells us what libraries Linux developers are using that aren't in LSB. We can then include [them] in the LSB, and that will make the LSB better."
AppChecker is like a more sophisticated alternative to the precompilation configuration script used to prepare a build environment for Linux programs. Linux software compilation usually follows a three-step process -- configuration, compilation and installation. When a user runs "./configure," the build system is checked for all necessary dependencies needed by the program to run. If a needed dependency is missing, the configuration script will fail and the user will have to locate the missing component.
Finding missing components can sometimes be difficult, especially with old or relatively obscure programs. Often the needed version of a dependency must itself be compiled from source, and the whole process can become very recursive.