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.
Standard configuration scripts will not allow compilation in the case of missing dependencies. Substitution with alternative libraries is not supported if a needed dependency cannot be found or compiled. In such a situation, the only recourse aside from giving up is to modify the program's source code to work with a different library, but this may be beyond the skill of some users.
AppChecker offers superior functionality over configuration scripts in that it can recommend replacements or alternatives to dependencies if they aren't available for a user's particular distro. However, AppChecker is not a true debugger. It doesn't check to see if a program's requirements are actually provided by the available libraries.
Also, AppChecker cannot detect subtle code changes between different versions of a program. Likewise, it is not a replacement for standard configuration scripts. Users wishing to compile from source must still run ./configure if the compilation process requires them to.
In short, AppChecker helps developers see what dependencies are needed, allowing them to take to care to make them available. While developers already do this, AppChecker just make their task a little easier.
More information on the Linux AppChecker is available at the Linux Developer Network here.