Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Linux Standard Base
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Former standard for Linux distributions}} {{Use mdy dates|date=December 2014}} {{Infobox technology standard | title = Linux Standard Base | long_name = | image = Lsb-logo.jpg | image_size = | alt = | caption = The LSB logo | abbreviation = LSB | status = Published | year_started = <!-- {{Start date|YYYY|MM|DD|df=y}} --> | first_published = {{Start date|2001|06|29}} | version = 5.0 | version_date = June 2, 2015 | organization = | committee = [[ISO/IEC JTC 1/SC 22]] | series = ISO/IEC 23360 | editors = | authors = | base_standards = [[POSIX]], [[Single UNIX Specification|SUS]] | related_standards = | predecessor = | successor = | domain = [[Software compatibility]] | license = | copyright = | website = <!-- {{URL|example.com}} --> }} The '''Linux Standard Base''' ('''LSB''') was a joint project by several [[Linux distribution]]s{{Which|date=March 2025}} 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. According to LSB: <blockquote> 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 [[application binary interface|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. </blockquote> LSB compliance might be certified for a product by a certification procedure.<ref>{{cite web | url = http://www.linuxfoundation.org/en/Certification | title = Certifying an Application to the LSB | publisher = [[Linux Foundation]] | year = 2008 | access-date = 2010-04-26 | url-status = dead | archive-url = https://web.archive.org/web/20090715171638/http://www.linuxfoundation.org/en/Certification | archive-date = July 15, 2009 | df = mdy-all}}</ref> LSB specified standard [[library (software)|libraries]] (centered around the {{code|ld-lsb.so}}), a number of commands and utilities that extend the [[POSIX]] standard, the layout of the [[Filesystem Hierarchy Standard|file system hierarchy]], [[run level]]s, the printing system, including [[spooling|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 [[UNIX System V|System V]]-style initialization scripts.<ref>{{cite web |title=Facility Names |url=http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/facilname.html |work=Linux Standard Base Core Specification 3.1 |year=2005}}</ref> 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.<ref>{{cite web |title=Comment conventions for init scripts |url=https://refspecs.linuxfoundation.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html |work=Linux Standard Base Core Specification 3.1 |year=2005}}</ref> The command <code>lsb_release -a</code> was available in many systems to get the LSB version details, or could be made available by installing an appropriate package, for example the <code>redhat-lsb</code> package in [[Red Hat|Red-Hat]]-flavored distributions such as [[Fedora (operating system)|Fedora]],<ref>{{cite web|url=https://apps.fedoraproject.org/packages/redhat-lsb|title=Package redhat-lsb|work=fedoraproject.org|access-date=August 15, 2015|archive-date=September 1, 2015|archive-url=https://web.archive.org/web/20150901033736/https://apps.fedoraproject.org/packages/redhat-lsb|url-status=dead}}</ref> or the <code>lsb-release</code> 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 <code>lsb_release</code> command is sometimes still available.{{cn|date = October 2021}} On February 7, 2023, a former maintainer of the LSB wrote, "The LSB project is essentially abandoned."<ref>{{cite web|title=Re: Archive of this Mailing List|url=https://lists.linuxfoundation.org/pipermail/lsb-discuss/2023-February/008278.html|work=lsb-discuss mailing list|date=February 7, 2023|archive-date=February 7, 2023|archive-url=https://www.mail-archive.com/lsb-discuss@lists.linux-foundation.org/msg00201.html|url-status=dead}}</ref> [[File:Lsb release -a 01.png|thumb|right|An example of LSB output in a terminal (Debian version 11)]] ==Backward compatibility== [[File:Linux kernel interfaces.svg|thumb|right|upright=1.8|LSB aims to make [[User space|userspace]] binaries portable]] LSB was designed to be binary-compatible and produced a stable [[application binary interface]] (ABI) for [[independent software vendor]]s. 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.<ref>{{cite web | url = http://ldn.linuxfoundation.org/lsb/roadmap | title = LSB Roadmap | publisher = [[Linux Foundation]] | year = 2008 | access-date = 2010-04-26 | archive-url = https://web.archive.org/web/20110723020015/http://ldn.linuxfoundation.org/lsb/roadmap | archive-date = 2011-07-23 | url-status = dead}}</ref> LSB 5.0 was the first major release that broke [[backward compatibility]] with earlier versions, as it removed [[Qt (software)|Qt]] 3; applications dynamically linked with Qt 3 libraries were not guaranteed to run on all LSB 5.0-compliant distributions.<ref>{{cite web |title=LSB 5.0 Release Notes |url=https://wiki.linuxfoundation.org/en/ReleaseNotes50#LSB_5.0_Release_Notes | website=linuxfoundation.org | access-date=3 June 2015 | url-status = dead | archive-url = https://web.archive.org/web/20170708050131/https://wiki.linuxfoundation.org/en/ReleaseNotes50 | archive-date = July 8, 2017}}</ref> ==Version history== * 1.0: Initial release June 29, 2001. * 1.1: Released January 22, 2002. Added hardware-specific specifications ([[IA-32]]). * 1.2: Released June 28, 2002. Added hardware-specific specifications ([[PowerPC]] [[32-bit]]). Certification began July 2002. * 1.2.1: Released October 2002. Added [[Itanium]]. * 1.3: Released December 17, 2002. Added hardware-specific specifications (Itanium, Enterprise System Architecture/390, z/Architecture). * 2.0: Released August 31, 2004 ** LSB is modularized to LSB-Core, LSB-CXX, LSB-Graphics, and LSB-[[Internationalization and localization|I18n]] (not released) ** New hardware-specific specifications (PowerPC [[64-bit]], [[AMD64]]) ** Synchronized to [[Single UNIX Specification]] (SUS) version 3 * 2.0.1: Released October 21, 2004, [[International Organization for Standardization|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: ** [[GNU C Library]] version 2.3.4 ** [[C++]] ABI is changed to the one used by [[GNU Compiler Collection|gcc]] 3.4 ** The core specification is updated to ISO [[POSIX]] (2003) ** Technical Corrigenda 1: 2005 * 3.1: Released October 31, 2005. This version has been submitted as ISO/IEC 23360:2006. * 3.2: Released January 28, 2008. This version has been submitted as ISO/IEC 23360:2006. * 4.0: Released November 11, 2008. This version contains the following features: ** [[GNU C Library]] version 2.4 ** Binary compatibility with LSB 3.x ** Easier to use [[Software development kit|SDK]] ** Support for newer versions of [[GTK]] and [[Cairo (graphics)|Cairo]] graphical libraries ** [[Java (programming language)|Java]] (optional module) ** Simpler ways of creating LSB-compliant RPM packages ** Crypto API (via the [[Network Security Services]] library) (optional module) * 4.1: Released February 16, 2011:<ref>{{cite web|url=http://www.h-online.com/open/news/item/Java-removed-from-Linux-Standard-Base-4-1-1205368.html |title=Java removed from Linux Standard Base 4.1 |author=djwm |date=10 March 2011 |url-status=dead |archive-url=https://web.archive.org/web/20131207045611/http://www.h-online.com/open/news/item/Java-removed-from-Linux-Standard-Base-4-1-1205368.html |archive-date=December 7, 2013}}</ref> ** Java removed<ref>{{cite web|url=http://www.h-online.com/open/news/item/Java-removed-from-Linux-Standard-Base-4-1-1205368.html|title=Java removed from Linux Standard Base 4.1|date=March 10, 2011|work=h-online.com|access-date=August 15, 2015}}</ref> ** "Trial Use" modules from LSB 4.0, covering multimedia ([[Advanced Linux Sound Architecture|ALSA]]), security (NSS) and desktop miscellaneous ([[xdg-utils]]) have been promoted as required submodules ** Updated [[GTK+]], Cairo and [[CUPS]] libraries ** Three new test suites added * 5.0: Released June 2, 2015, This version has been submitted as ISO/IEC 23360:2021 ** [[GNU C Library]] version 2.10 (for psiginfo) ** 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<ref>{{cite web |title=LSB 5.0 Release Notes: Qt 3 Removed |url=https://wiki.linuxfoundation.org/en/ReleaseNotes50#Qt_3_Removed |website=linuxfoundation.org |access-date=3 June 2015}}</ref>) ** Incorporates the changes made in [[Filesystem Hierarchy Standard|FHS 3.0]] ** Qt 3 library has been removed ** Evolved module strategy; LSB is modularized to LSB Core, LSB Desktop, LSB Languages, LSB Imaging, and LSB Trial Use ==ISO/IEC standard== The LSB, version 3.1, is registered as an official [[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|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<ref>{{cite ISO standard |csnumber=43781 |title=ISO/IEC 23360-1:2006 - Linux Standard Base (LSB) core specification 3.1 -- Part 1: Generic specification |access-date=2011-10-15}}</ref> * 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 for [[PPC32]] architecture * ISO/IEC 23360-6:2006 Linux Standard Base (LSB) core specification 3.1 β Part 6: Specification for [[PPC64]] architecture * ISO/IEC 23360-7:2006 Linux Standard Base (LSB) core specification 3.1 β Part 7: Specification for [[ESA/390|S390]] architecture * ISO/IEC 23360-8:2006 Linux Standard Base (LSB) core specification 3.1 β Part 8: Specification for [[z/Architecture|S390X]] 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.<ref>{{cite ISO standard | csnumber=38825 | title=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) |access-date=2011-10-15}}</ref> The LSB, version 5.0, is also registered as an official [[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|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.<ref>{{cite web |url=http://standards.iso.org/ittf/PubliclyAvailableStandards/ |title=ISO Publicly Available Standards |access-date=2011-10-15}}</ref> ==Reception== While LSB was a standard and without a competitor, it was followed only by few [[Linux distribution]]s. 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 version history#0904|Ubuntu 9.04 (Jaunty Jackalope)]];<ref>[https://archive.today/20120804111738/https://www.linuxbase.org/lsb-cert/productdir.php?by_lsb Certified Products Product Directory] on linuxbase.org (2015-01-12)</ref> even fewer were certified for version 4.1. The LSB was criticized<ref>{{cite web | url = http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=271662#44 | title = bugs.debian.org}}</ref><ref>{{cite web | url = http://ldn.linuxfoundation.org/blog-entry/standards-and-conversations-part-1 | title = linuxfoundation.org }}{{Dead link|date=February 2020 |bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{cite web | url = http://openacs.org/forums/message-view?message_id=34818 | title = openacs.org}}</ref><ref>{{cite web | url = http://www.osnews.com/permalink?296712 | title = osnews.com}}</ref> 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,<ref>{{cite web | url = http://refspecs.linux-foundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/swinstall.html#SWINSTALL-INTRO | title = Chapter 22. Software Installation 22.1. Introduction | work = Linux Standard Base Core Specification 3.1 | year = 2005}}</ref> or (preferably) be delivered in a restricted form of the [[RPM Package Manager]] format.<ref>{{cite web | url = http://refspecs.linux-foundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/pkgscripts.html | title = Chapter 22. Software Installation 22.3. Package Script Restrictions | work = Linux Standard Base Core Specification 3.1 | year = 2005}}</ref> 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 (file converter)|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 <code>lsb</code> package,<ref name="debian-lsb-package">{{cite web | url = http://packages.debian.org/stable/lsb | title = Debian -- Details of package lsb in lenny (stable) -- Linux Standard Base 3.2 support package | publisher = [[Debian Project]] | date = 2008-08-18 | access-date = 2010-04-26}}</ref> 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."<ref name="debian-lsb-package"/> Debian strived to comply with the LSB, but with many limitations.<ref>{{cite web | url = http://wiki.debian.org/DebianLsb | title = Debian LSB | publisher = [[Debian Project]] | access-date = 2010-04-26}}</ref> However, this effort ceased around July 2015 due to lack of interest and workforce inside the project.<ref>{{cite web | url = https://lists.debian.org/debian-lsb/2015/07/msg00000.html | title = Debian LSB ML discussion | publisher = [[Debian Project]] | access-date = 2015-09-12}}</ref> In September 2015, the Debian project confirmed that while support for [[Filesystem Hierarchy Standard]] (FHS) would continue, support for LSB had been dropped.<ref>{{cite web|url=https://lwn.net/Articles/658809/|title=Debian dropping the Linux Standard Base|work=[[LWN.net]]}}</ref> Ubuntu followed Debian in November 2015.<ref>{{cite web|url=https://launchpad.net/ubuntu/+source/lsb/9.20150917ubuntu1|title=lsb 9.20150917ubuntu1 source package in Ubuntu|date=November 19, 2015 }}</ref> ===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.<ref name="drepper-2005">{{cite web | url = http://udrepper.livejournal.com/8511.html | title = Do you still think the LSB has some value? | author = Drepper, Ulrich | date = 2005-09-17 | access-date = 2010-04-26}}</ref> 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.<ref name="drepper-2005"/> 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.<ref>{{cite web | url = http://www.linuxfoundation.org/collaborate/workgroups/lsb/all-about-linux-application-checker | title = All About the Linux Application Checker | publisher = [[Linux Foundation]] | year = 2008 | access-date = 2010-04-26}}</ref> ==See also== {{Portal|Linux}} * [[Intel Binary Compatibility Standard]] (iBCS) * [[POSIX]] (Portable Operating System Interface) ==References== {{Reflist|30em}} ==External links== * [http://refspecs.linuxfoundation.org/lsb.shtml Linux Standard Base Specifications Archive], linuxfoundation.org * [https://wiki.linuxfoundation.org/lsb/start Linux Standard Base (LSB)], wiki.linuxfoundation.org * [http://linuxtesting.org/results/testsuite Open Linux VERification (OLVER) Project], linuxtesting.org * [https://pkgs.org/search/?q=lsb search for lsb packages], pkgs.org * [https://pkgs.org/download/lsb lsb], pkgs.org * [https://launchpad.net/lsb lsb in Launchpad], launchpad.net - bug reports Media: * [http://www.debian.org/News/1998/19980826e Additional Vendors Participate in Growing LSB Effort], 1998, debian.org - describes the breakdown of teams (at the time) and who was involved, of historical interest * [http://linux.slashdot.org/article.pl?sid=04/11/17/1427257&tid=185&tid=190&tid=106 Four Linux Vendors Agree On An LSB Implementation], 2004, slashdot.org * [http://www.licquia.org/archives/2005/09/27/yes-the-lsb-has-value/ Yes, the LSB Has Value], 2005, licquia.org β response to Drepper by Jeff Licquia {{Clear}} {{Linux kernel}} {{ISO standards}} {{List of International Electrotechnical Commission standards}} {{Linux Foundation}} [[Category:Interfaces of the Linux kernel]] [[Category:ISO standards]] [[Category:Linux]] [[Category:Linux APIs]] [[Category:Linux Foundation]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite ISO standard
(
edit
)
Template:Cite web
(
edit
)
Template:Clear
(
edit
)
Template:Cn
(
edit
)
Template:Code
(
edit
)
Template:Dead link
(
edit
)
Template:ISO standards
(
edit
)
Template:Infobox technology standard
(
edit
)
Template:Linux Foundation
(
edit
)
Template:Linux kernel
(
edit
)
Template:List of International Electrotechnical Commission standards
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use mdy dates
(
edit
)
Template:Which
(
edit
)