Linux Standard Base

Last updated

The LSB logo Lsb-logo.jpg
The LSB logo

The Linux Standard Base (LSB) was a joint project by several Linux distributions under the organizational structure of the Linux Foundation to standardize the software system structure, including the Filesystem Hierarchy Standard. LSB was based on the POSIX specification, the Single UNIX Specification (SUS), and several other open standards, but extended them in certain areas.

Contents

According to LSB:

The goal of the LSB is to develop and promote a set of open standards that will increase compatibility among Linux distributions and enable software applications to run on any compliant system even in binary form. In addition, the LSB will help coordinate efforts to recruit software vendors to port and write products for Linux Operating Systems.

LSB compliance might be certified for a product by a certification procedure. [1]

LSB specified standard libraries (centered around the ld-lsb.so), a number of commands and utilities that extend the POSIX standard, the layout of the file system hierarchy, run levels, the printing system, including spoolers such as CUPS and tools like Foomatic, and several extensions to the X Window System. It also specified boot facilities, such as $local_fs, $network, which were used to indicate service dependencies in System V-style initialization scripts. [2] A machine readable comment block at the top of a script provided the information necessary to determine at which point of the initialization process the script should be invoked; it was called the LSB header. [3]

The command lsb_release -a was available in many systems to get the LSB version details, or could be made available by installing an appropriate package, for example the redhat-lsb package in Red-Hat-flavored distributions such as Fedora, [4] or the lsb-release package in Debian-based distributions.

The standard stopped being updated in 2015 and current Linux distributions do not adhere to or offer it; however, the lsb_release command is sometimes still available.[ citation needed ] On February 7, 2023, a former maintainer of the LSB wrote, "The LSB project is essentially abandoned." [5]

An example of LSB output in a terminal (Debian version 11) Lsb release -a 01.png
An example of LSB output in a terminal (Debian version 11)

Backward compatibility

LSB aims to make userspace binaries portable Linux kernel interfaces.svg
LSB aims to make userspace binaries portable

LSB was designed to be binary-compatible and produced a stable application binary interface (ABI) for independent software vendors. To achieve backward compatibility, each subsequent version was purely additive. In other words, interfaces were only added; no interfaces were removed. The LSB adopted an interface deprecation policy to give application developers enough time in case an interface was removed from LSB.

This allowed the developer to rely on every interface in LSB for a known time and also to plan for changes. Interfaces were only removed after having been marked "deprecated" for at least three major versions, or roughly eleven years. [6]

LSB 5.0 was the first major release that broke backward compatibility with earlier versions. [7]

Version history

ISO/IEC standard

The LSB, version 3.1, is registered as an official ISO/IEC international standard. The main parts of it are:

There is also ISO/IEC TR 24715:2006 which identifies areas of conflict between ISO/IEC 23360 (the Linux Standard Base 3.1 specification) and the ISO/IEC 9945:2003 (POSIX) International Standard. [12]

The LSB, version 5.0, is also registered as an official ISO/IEC international standard.

ISO/IEC 23360 and ISO/IEC TR 24715 can be freely downloaded from ISO website. [13]

Reception

While LSB was a standard and without a competitor, it was followed only by few Linux distributions. For instance, only 21 distribution releases (versions) were certified for LSB version 4.0, notably Red Flag Linux Desktop 6.0, Red Hat Enterprise Linux 6.0, SUSE Linux Enterprise 11, and Ubuntu 9.04 (Jaunty Jackalope); [14] even fewer were certified for version 4.1.

The LSB was criticized [15] [16] [17] [18] for not taking input from projects, most notably the Debian project, outside the sphere of its member companies.

Choice of the RPM package format

LSB specified that software packages should either be delivered as an LSB-compliant installer, [19] or (preferably) be delivered in a restricted form of the RPM Package Manager format. [20]

This choice of package format precluded the use of other existing package formats not compatible with RPM. To address this, the standard did not dictate which package format the system must use for its own packages, merely that RPM must be supported to allow packages from third-party distributors to be installed on a conforming system.

Limitations on Debian

Debian included optional support for LSB early on, at version 1.1 in "woody" (3.0; July 19, 2002), 2.0 in "sarge" (3.1; June 6, 2005), 3.1 in "etch" (4.0; April 8, 2007), 3.2 in "lenny" (5.0; February 14, 2009) and 4.1 in "wheezy" (7; May 4, 2013). To use foreign LSB-compliant RPM packages, the end-user needs to use Debian's Alien program to transform them into the native package format and then install them.

The LSB-specified RPM format had a restricted subset of RPM features—to block usage of RPM features that would be untranslatable to .deb with Alien or other package conversion programs, and vice versa, as each format has capabilities the other lacks. In practice, not all Linux binary packages were necessarily LSB-compliant, so while most could be converted between .rpm and .deb, this operation was restricted to a subset of packages.

By using Alien, Debian was LSB-compatible for all intents and purposes, but according to the description of their lsb package, [21] the presence of the package "does not imply that we believe that Debian fully complies with the Linux Standard Base, and should not be construed as a statement that Debian is LSB-compliant." [21]

Debian strived to comply with the LSB, but with many limitations. [22] However, this effort ceased around July 2015 due to lack of interest and workforce inside the project. [23] In September 2015, the Debian project confirmed that while support for Filesystem Hierarchy Standard (FHS) would continue, support for LSB had been dropped. [24] Ubuntu followed Debian in November 2015. [25]

Quality of compliance test suites

Additionally, the compliance test suites were criticized for being buggy and incomplete—most notably, in 2005 Ulrich Drepper criticized the LSB for poorly written tests which can cause incompatibility between LSB-certified distributions when some implement incorrect behavior to make buggy tests work, while others apply for and receive waivers from complying with the tests. [26] He also denounced a lack of application testing, pointing out that testing only distributions can never solve the problem of applications relying on implementation-defined behavior. [26]

For the vendors considering LSB certifications in their portability efforts, the Linux Foundation sponsored a tool that analyzed and provided guidance on symbols and libraries that go beyond the LSB. [27]

See also

Related Research Articles

<span class="mw-page-title-main">Debian</span> Linux distribution based on free and open-source software

Debian, also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software, developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of Debian (0.01) was released on September 15, 1993, and its first stable version (1.1) was released on June 17, 1996. The Debian Stable branch is the most popular edition for personal computers and servers. Debian is also the basis for many other distributions, most notably Ubuntu.

<span class="mw-page-title-main">Executable and Linkable Format</span> Standard file format for executables, object code, shared libraries, and core dumps.

In computing, the Executable and Linkable Format, is a common standard file format for executable files, object code, shared libraries, and core dumps. First published in the specification for the application binary interface (ABI) of the Unix operating system version named System V Release 4 (SVR4), and later in the Tool Interface Standard, it was quickly accepted among different vendors of Unix systems. In 1999, it was chosen as the standard binary file format for Unix and Unix-like systems on x86 processors by the 86open project.

The Portable Operating System Interface is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system and user-level application programming interfaces (APIs), along with command line shells and utility interfaces, for software compatibility (portability) with variants of Unix and other operating systems. POSIX is also a trademark of the IEEE. POSIX is intended to be used by both application and system developers.

The Single UNIX Specification (SUS) is a standard for computer operating systems, compliance with which is required to qualify for using the "UNIX" trademark. The standard specifies programming interfaces for the C language, a command-line shell, and user commands. The core specifications of the SUS known as Base Specifications are developed and maintained by the Austin Group, which is a joint working group of IEEE, ISO/IEC JTC 1/SC 22/WG 15 and The Open Group. If an operating system is submitted to The Open Group for certification, and passes conformance tests, then it is deemed to be compliant with a UNIX standard such as UNIX 98 or UNIX 03.

<span class="mw-page-title-main">APT (software)</span> Free software package management system

Advanced package tool, or APT, is a free-software user interface that works with core libraries to handle the installation and removal of software on Debian, and Debian-based Linux distributions. APT simplifies the process of managing software on Unix-like computer systems by automating the retrieval, configuration and installation of software packages, either from precompiled files or by compiling source code.

The GNU C Library, commonly known as glibc, is the GNU Project's implementation of the C standard library. Despite its name, it now also directly supports C++. It was started in the 1980s by the Free Software Foundation (FSF) for the GNU operating system.

The C standard library or libc is the standard library for the C programming language, as specified in the ISO C standard. Starting from the original ANSI C standard, it was developed at the same time as the C library POSIX specification, which is a superset of it. Since ANSI C was adopted by the International Organization for Standardization, the C standard library is also called the ISO C library.

In computing, a locale is a set of parameters that defines the user's language, region and any special variant preferences that the user wants to see in their user interface. Usually a locale identifier consists of at least a language code and a country/region code. Locale is an important aspect of i18n.

<span class="mw-page-title-main">Kanotix</span> Linux distribution

Kanotix, also referred to as KANOTIX, is an operating system based on Debian, with advanced hardware detection. It can run from an optical disc drive or other media i.e. USB-stick without using a hard disk drive.

The archiver, also known simply as ar, is a Unix utility that maintains groups of files as a single archive file. Today, ar is generally used only to create and update static library files that the link editor or linker uses and for generating .deb packages for the Debian family; it can be used to create archives for any purpose, but has been largely replaced by tar for purposes other than static libraries. An implementation of ar is included as one of the GNU Binutils.

pax is an archiving utility available for various operating systems and defined since 1995. Rather than sort out the incompatible options that have crept up between tar and cpio, along with their implementations across various versions of Unix, the IEEE designed new archive utility pax that could support various archive formats with useful options from both archivers. The pax command is available on Unix and Unix-like operating systems and on IBM i, and Microsoft Windows NT until Windows 2000.

Technical variations of Linux distributions include support for different hardware devices and systems or software package configurations. Organizational differences may be motivated by historical reasons. Other criteria include security, including how quickly security upgrades are available; ease of package management; and number of packages available.

<span class="mw-page-title-main">Linux Mint</span> Ubuntu-based Linux distribution

Linux Mint is a community-driven Linux distribution based on Ubuntu, bundled with a variety of free and open-source applications. It can provide full out-of-the-box multimedia support for those who choose to include proprietary software such as multimedia codecs. Compared to Ubuntu, it uses a different Cinnamon interface by default, using a different, more traditional layout that can be customized by dragging the applets and creating panels. New applets can also be downloaded.

The DCC Alliance (DCCA) was an industry association designed to promote a common subset of the Debian Linux operating system that multiple companies within the consortium could distribute. It was founded by Ian Murdock in 2005 and was wound up in 2007.

<span class="mw-page-title-main">Bharat Operating System Solutions</span> Indian Debian-based Linux distribution

Bharat Operating System Solutions is an Indian Linux distribution based on Debian, with Its latest stable version is 9.0 ("Urja") which was released in February 2021.

<span class="mw-page-title-main">RPM Package Manager</span> Package management system

RPM Package Manager (RPM) is a free and open-source package management system. The name RPM refers to the .rpm file format and the package manager program itself. RPM was intended primarily for Linux distributions; the file format is the baseline package format of the Linux Standard Base.

antiX Lightweight systemd free Linux distribution

antiX is a Linux distribution, originally based on MEPIS, which itself is based on the Debian stable distribution. antiX initially replaced the MEPIS KDE desktop environment with the Fluxbox and IceWM window managers, making it suitable for older, less powerful x86-based systems. Unlike Debian, antiX does not use the systemd init system, instead, antiX provides images where either SysVinit or Runit are set as the default init system.

Software Package Data Exchange (SPDX) is an open standard for software bill of materials (SBOM). SPDX allows the expression of components, licenses, copyrights, security references and other metadata relating to software. Its original purpose was to improve license compliance, and has since been expanded to facilitate additional use-cases, such as supply-chain transparency and security. SPDX is authored by the community-driven SPDX Project under the auspices of the Linux Foundation.

<span class="mw-page-title-main">Devuan</span> Linux distribution based on Debian

Devuan is a fork of the Debian Linux distribution that uses sysvinit, runit or OpenRC instead of systemd. Devuan aims to avoid "lock-in" by projects like systemd and aims to maintain compatibility with other init systems to avoid detaching Linux from other Unix systems.

<span class="mw-page-title-main">MX Linux</span> Mid-weight family of operating systems

MX Linux is a Linux distribution based on Debian stable and using core antiX components, with additional software created or packaged by the MX community. The development of MX Linux is a collaborative effort between the antiX and former MEPIS communities. The MX 'name' comes from the M for MEPIS and the X from antiX – an acknowledgment of their roots. The community's stated goal is to produce "a family of operating systems that are designed to combine elegant and efficient desktops with high stability and solid performance".

References

  1. "Certifying an Application to the LSB". Linux Foundation. 2008. Archived from the original on July 15, 2009. Retrieved April 26, 2010.
  2. "Facility Names". Linux Standard Base Core Specification 3.1. 2005.
  3. "Comment conventions for init scripts". Linux Standard Base Core Specification 3.1. 2005.
  4. "Package redhat-lsb". fedoraproject.org. Archived from the original on September 1, 2015. Retrieved August 15, 2015.
  5. "Re: Archive of this Mailing List". lsb-discuss mailing list. February 7, 2023.
  6. "LSB Roadmap". Linux Foundation. 2008. Retrieved April 26, 2010.
  7. "LSB 5.0 Release Notes". linuxfoundation.org. Archived from the original on July 8, 2017. Retrieved June 3, 2015.
  8. djwm (March 10, 2011). "Java removed from Linux Standard Base 4.1". Archived from the original on December 7, 2013.
  9. "Java removed from Linux Standard Base 4.1". h-online.com. March 10, 2011. Retrieved August 15, 2015.
  10. "LSB 5.0 Release Notes: Qt 3 Removed". linuxfoundation.org. Retrieved June 3, 2015.
  11. ISO/IEC 23360-1:2006 - Linux Standard Base (LSB) core specification 3.1 -- Part 1: Generic specification . Retrieved October 15, 2011.
  12. ISO/IEC TR 24715:2006 - Information technology -- Programming languages, their environments and system software interfaces -- Technical Report on the Conflicts between the ISO/IEC 9945 (POSIX) and the Linux Standard Base (ISO/IEC 23360) . Retrieved October 15, 2011.
  13. "ISO Publicly Available Standards" . Retrieved October 15, 2011.
  14. Certified Products Product Directory on linuxbase.org (2015-01-12)
  15. "bugs.debian.org".
  16. "linuxfoundation.org".[ permanent dead link ]
  17. "openacs.org".
  18. "osnews.com".
  19. "Chapter 22. Software Installation 22.1. Introduction". Linux Standard Base Core Specification 3.1. 2005.
  20. "Chapter 22. Software Installation 22.3. Package Script Restrictions". Linux Standard Base Core Specification 3.1. 2005.
  21. 1 2 "Debian -- Details of package lsb in lenny (stable) -- Linux Standard Base 3.2 support package". Debian Project. August 18, 2008. Retrieved April 26, 2010.
  22. "Debian LSB". Debian Project . Retrieved April 26, 2010.
  23. "Debian LSB ML discussion". Debian Project . Retrieved September 12, 2015.
  24. "Debian dropping the Linux Standard Base". LWN.net .
  25. "lsb 9.20150917ubuntu1 source package in Ubuntu". November 19, 2015.
  26. 1 2 Drepper, Ulrich (September 17, 2005). "Do you still think the LSB has some value?" . Retrieved April 26, 2010.
  27. "All About the Linux Application Checker". Linux Foundation. 2008. Retrieved April 26, 2010.

Media: