Understanding the LSB Sample Implementation

Note: The following information is out of date, and is preserved here for posterity. Developers interested in testing LSB compliance should use at least two LSB-compliant operating systems in their testing instead.

Why another Linux build? Aren't there enough Linux distributions already?

The LSB Sample Implementation is not a general-purpose distribution; it's a limited test environment, and a proof-of-concept of building to the LSB specifications.

Most Linux distributions supply lots of packages, and which of them gets installed, and later added, removed, or upgraded is in the local user's control. This is as it should be, except when you're trying to build a portable application. After all, how can you be sure you haven't linked your application to something that is not guaranteed to be present on every system where your application will be installed?

If you as an application developer take advantage of the LSB, that problem becomes greatly minimized: a core set of libraries and interfaces will be present in each LSB-certified distribution, and will work in the way documented in the LSB.

The LSB Sample Implementation is a minimal implementation of that core set, which can be used to test programs before releasing them to the field.

For example, some software has auto-detecting build scripts (such as GNU configure), which will enable the build to make use of many things installed on a system, whether those are part of the LSB. Running the resulting binary in the LSB Sample Implementation will help detect cases where non-LSB features have crept in.

Note that the primary testing tool for an LSB application is lsbappchk. lsbappchk is a static tool, however, and so cannot catch runtime issues, such as calling out to another program. The LSB Sample Implementation provides a way to run the application in a conforming environment.

The LSB Sample Implementation also serves as a proof-of-concept of building an LSB conforming system. The policy is to use released packages from the package maintainers, with a truly minimal set of patches. Some patches are necessary to build in the LSB Sample Implementation environment (often to account for the absence of some tool assumed by the build). A few patches are supplied to fix bugs or add LSB conformance, but generally the preference is for such patches to be picked up by the upstream maintainers and folded into their next release.

Finally, the LSB Sample Implementation is able to stay in lock-step with the evolving LSB specification. New features appear in test versions of the LSB Sample Implementation as they are finalized into the specification. The LSB Sample Implementation aims to release versions matching fully approved new specifications at roughly the same time as the LSB specification. This gives developers the opportunity to preview new features before they become a fully-supported part of their favorite distributions.

The LSB Sample Implementation is not designed as a standalone Linux distribution. It is mainly an example and a test environment–the LSB project does not have the resources to track and fix performance and security issues that is part of the value-add of a true distributor.

Installation

The LSB Sample Implementation (SI) tool set contains two packages:

Every package is avaliable in rpm, deb, and tarball formats. These two packages can be installed independently from each other; in fact, it's possible to install them on different machines and have them work together, if the need arises.

Rpm and Deb Installation

Depending on the type of package file you downloaded, you will need to install the rpm or deb package using rpm, dpkg, or another package manager. For example:

 rpm -i lsbsi-chroot-3.2.0-3.i586.rpm lsbsi-tools-3.2.0-3.i586.rpm 

 

By default, lsbsi-chroot is installed into /opt/lsb/si/chroot and lsbsi-tools is installed into /opt/lsb/si/tools. After installing lsbsi-chroot, the lsbsi group will be added to your system.

It is important to note that you add your username into lsbsi group. Only users from lsbsi group or root can run the Sample Implementation tools. Also, /etc/sudoers will be modified to allow chroot and mount for all users from the lsbsi group.

If xdg-utils is installed in your system, then the menu item for running SI will appear in the desktop menu after installing the lsbsi-tools package. Otherwise, please use /opt/lsb/si/tools/si for running LSB SI.

Tarball Installation

  1. Extract the file lsbsi-chroot-3.2.0-3.i586.tar.gz:

     sudo tar xzfv lsbsi-chroot-3.2.0-3.i586.tar.gz 
  2. Navigate to the lsbsi-chroot-3.2.0 folder and execute this command:

     sudo ./install.sh. 

This script adds thelsbsi group and modifies the /etc/sudoers file.

  1. Extract lsbsi-tools-3.2.0-3.i586.tar.gz:

     tar xzfv lsbsi-tools-3.2.0-3.i586.tar.gz 

Navigate to the lsbsi-tools-3.2.0 folder and execute this command:

 sudo ./install.sh. 

During installation you have to specify the path to the chroot (which is to the folder where lsbsi-chroot was extracted).

 

Running LSB SI Tools

 

You can run SI via the desktop menu or by executing <i>[lsbsi-tools-path]/si-GUI. If you used rpm or deb, then <i>[lsbsi-tools-path] is /opt/lsb/si/tools. If you used tarball to install, then it's the path to the folder where lsbsi-tools was extracted. This will launch the GUI interface for adjustment and launching the chroot environment. There is another way for launching the chroot environment: using the non-GUI <i>[lsbsi-tools-path]/si script. It's useful in case of absence of the Qt4 library on your system.

Configuration Launching

The grpahical interface is used to set some of the options for launching the chroot environment. Some of options, for example, are only used for ssh connections for remote access to the chroot environment.

There are the options:

The graphical interface is the easiest way for adjustment of options for launching chroot. But there are other ways. It's possible to specify all options in the si_run.conf file or, if you are using the si script, to specify arguments in the si script itself (see ./si –help).

After setting all options click the Run SI button. This will launch a terminal window (i.e., gnome-terminal or konsole) with a shell running in the SI chroot environment.

Troubleshooting SI

Uninstall SI

To uninstall with rpm or deb use the rpm -e or dpkg -r commands. For uninstalling the tarball version, navigate into the corresponding folder and run sudo ./uninstall.sh.