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 systemeven 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 standardlibraries (centered around theld-lsb.so), a number of commands and utilities that extend thePOSIX standard, the layout of thefile system hierarchy,run levels, the printing system, includingspoolers such asCUPS and tools likeFoomatic, and several extensions to theX Window System. It also specified boot facilities, such as$local_fs,$network, which were used to indicate service dependencies inSystem 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 commandlsb_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 theredhat-lsb package inRed-Hat-flavored distributions such asFedora,[4] or thelsb-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, thelsb_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)
To provide backward compatibility, the LSB adopted an interface deprecation policy to give application developers enough time to adapt in case an interface was removed from LSB. An interface that is to be removed would first be marked as deprecated in an LSB release; that interface would still be supported in that release and at least two subsequent LSB releases. This allowed the developer to rely on every interface in LSB for a known time and also to plan for changes.[6]
LSB 5.0 was the first major release that brokebackward compatibility with earlier versions, as it removedQt 3; applications dynamically linked with Qt 3 libraries were not guaranteed to run on all LSB 5.0-compliant distributions.[7]
2.0.1: Released October 21, 2004,ISO version of LSB 2.0, which included specification for all hardware architectures (except LSB-Graphics, of which only a generic version is available).
2.1: Released March 11, 2005.
3.0: Released July 1, 2005. Among other library changes:
"Trial Use" modules from LSB 4.0, covering multimedia (ALSA), security (NSS) and desktop miscellaneous (xdg-utils) have been promoted as required submodules
First major release that breaks backward compatibility with earlier versions (compatible with LSB 3.0, and mostly compatible with LSB 3.1 and later, with some exceptions[10])
The LSB, version 3.1, is registered as an officialISO/IEC international standard. The main parts of it are:
ISO/IEC 23360-1:2006 Linux Standard Base (LSB) core specification 3.1 — Part 1: Generic specification[11]
ISO/IEC 23360-2:2006 Linux Standard Base (LSB) core specification 3.1 — Part 2: Specification for IA-32 architecture
ISO/IEC 23360-3:2006 Linux Standard Base (LSB) core specification 3.1 — Part 3: Specification for IA-64 architecture
ISO/IEC 23360-4:2006 Linux Standard Base (LSB) core specification 3.1 — Part 4: Specification for AMD64 architecture
ISO/IEC 23360-5:2006 Linux Standard Base (LSB) core specification 3.1 — Part 5: Specification forPPC32 architecture
ISO/IEC 23360-6:2006 Linux Standard Base (LSB) core specification 3.1 — Part 6: Specification forPPC64 architecture
ISO/IEC 23360-7:2006 Linux Standard Base (LSB) core specification 3.1 — Part 7: Specification forS390 architecture
ISO/IEC 23360-8:2006 Linux Standard Base (LSB) core specification 3.1 — Part 8: Specification forS390X architecture
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 officialISO/IEC international standard.
ISO/IEC 23360-1-1:2021 Linux Standard Base (LSB) — Part 1-1: Common definitions
ISO/IEC 23360-1-2:2021 Linux Standard Base (LSB) — Part 1-2: Core specification generic part
ISO/IEC 23360-1-3:2021 Linux Standard Base (LSB) — Part 1-3: Desktop specification generic part
ISO/IEC 23360-1-4:2021 Linux Standard Base (LSB) — Part 1-4: Languages specification
ISO/IEC 23360-1-5:2021 Linux Standard Base (LSB) — Part 1-5: Imaging specification
ISO/IEC TS 23360-1-6:2021 Linux Standard Base (LSB) — Part 1-6: Graphics and Gtk3 specification
ISO/IEC 23360-2-2:2021 Linux Standard Base (LSB) — Part 2-2: Core specification for X86-32 architecture
ISO/IEC 23360-2-3:2021 Linux Standard Base (LSB) — Part 2-3: Desktop specification for X86-32 architecture
ISO/IEC 23360-3-2:2021 Linux Standard Base (LSB) — Part 3-2: Core specification for IA64 (Itanium™) architecture
ISO/IEC 23360-3-3:2021 Linux Standard Base (LSB) — Part 3-3: Desktop specification for IA64 (Itanium TM) architecture
ISO/IEC 23360-4-2:2021 Linux Standard Base (LSB) — Part 4-2: Core specification for AMD64 (X86-64) architecture
ISO/IEC 23360-4-3:2021 Linux Standard Base (LSB) — Part 4-3: Desktop specification for AMD64 (X86-64) architecture
ISO/IEC 23360-5-2:2021 Linux Standard Base (LSB) — Part 5-2: Core specification for PowerPC 32 architecture
ISO/IEC 23360-5-3:2021 Linux Standard Base (LSB) — Part 5-3: Desktop specification for PowerPC 32 architecture
ISO/IEC 23360-6-2:2021 Linux Standard Base (LSB) — Part 6-2: Core specification for PowerPC 64 architecture
ISO/IEC 23360-6-3:2021 Linux Standard Base (LSB) — Part 6-3: Desktop specification for PowerPC 64 architecture
ISO/IEC 23360-7-2:2021 Linux Standard Base (LSB) — Part 7-2: Core specification for S390 architecture
ISO/IEC 23360-7-3:2021 Linux Standard Base (LSB) — Part 7-3: Desktop specification for S390 architecture
ISO/IEC 23360-8-2:2021 Linux Standard Base (LSB) — Part 8-2: Core specification for S390X architecture
ISO/IEC 23360-8-3:2021 Linux Standard Base (LSB) — Part 8-3: Desktop specification for S390X architecture
ISO/IEC 23360 and ISO/IEC TR 24715 can be freely downloaded from ISO website.[13]
LSB specified that software packages should either be delivered as an LSB-compliant installer,[19] or (preferably) be delivered in a restricted form of theRPM 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.
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, theend-user needs to use Debian'sAlien 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 theirlsb 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 forFilesystem Hierarchy Standard (FHS) would continue, support for LSB had been dropped.[24] Ubuntu followed Debian in November 2015.[25]
Additionally, the compliance test suites were criticized for being buggy and incomplete—most notably, in 2005Ulrich 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, theLinux Foundation sponsored a tool that analyzed and provided guidance on symbols and libraries that go beyond the LSB.[27]