Linux Standard Base

Linux Standard Base eli LSB on Linux-käyttöjärjestelmälle kehitetty standardi ja sertifikointi järjestelmän ohjelmistoista ja asetuksista. 
LSB:n tarkoitus on varmistaa, että Linux-käyttöjärjestelmä ei pirstaloidu eri käyttöjärjestelmiksi kuten tapahtui Unix-käyttöjärjestelmälle. LSB pyrkii myös pitämään ohjelmistokehityksen yksinkertaisena.

LSB:stä on julkaistu ISO-standardi ISO/IEC 23360-1:2006, josta on päivitetty versio ISO/IEC 23360-1-1:2021. Standardin on kehittänyt Linux Foundation.

Käyttöjärjestelmän suosion määrää sen päällä toimivien ohjelmistojen saatavuus sekä toiminnot. Yksittäiset ohjelmoijat sekä suljetun lähdekoodin ohjelmistoja kehittävät yritykset joutuvat ongelmiin Linux-käyttöjärjestelmän useiden jakelupakettien kanssa. Eri jakelupaketit sisällyttävät eri versioita kirjastoista ja tallentavat asetustiedostot eri hakemistoihin. Tämä on aikoinaan pakottanut ohjelmistokehittäjät kohdistamaan ohjelmiston jakamisen sekä myymisen vain valituille jakelupaketeille ja on asettanut eri jakelupakettien käyttäjät eriarvoiseen asemaan, kun ohjelmistokehityksen tavoitteet on jouduttu rajaamaan tiettyihin jakelupaketteihin kehitys- sekä ylläpitokustannuksien alhaisena pitämiseksi.

LSB-standardin tarkoituksena on poistaa nämä rajoitukset ja varmistaa, että Linux-käyttöjärjestelmä ei pirstaloidu useaksi eri käyttöjärjestelmäksi, vaan säilyttää käytettävyyden sen eri jakelupakettien kesken sekä ohjelmistojen helpon asennuksen ja jakamisen. Ohjelmistot on LSB-standardin myötä mahdollista paketoida vain kerran.

Mitä LSB määrittelee? 
Linux Standard Base määrittää yleiset ohjelmistojen paketointi- sekä asennussäännöt. Samoin se määrittää yleiset ohjelmistokirjastot ja niiden valinnat. LSB määrittelee myös järjestelmän asetustiedostot, tiedostojen sijainnit, järjestelmän komennot sekä ohjelmistojen ABI (Application Binary Interface) -rajapinnat järjestelmälle (sekä sovellus- että järjestelmätasoille).

Linuxissa käytettyjen nimien ja numeroiden luettelo (Linux Assigned Names And Numbers Authority, LANANA) on myös siirretty osaksi LSB:tä. LANANA perustettiin IANA:n kaltaisena nimien ja numeroiden rekisterinä.

LSB 4.1 versio poisti standardista Javan, joka oli kokeiluluontoisessa versiossa 4.0 mukana. Lisensointiongelmat tekivät mahdottomaksi Javan lisäämisen. LSB 4.1:ssä mukaan otettuja ovat ALSA, NSS ja työpöytätyökalut xdg-utils. GTK+, Cairo ja CUPS-kirjastot on päivitetty.

LSB 5.0 versio rikkoi täyden taaksepäin yhteensopivuuden poistamalla Qt:n version 3 standardista. 5.0-version myötä LSB on modularisoitu ja järjestelmä voi toimittaa vain tarvittavan osan viidestä moduulista:
 LSB Core
 LSB Desktop
 LSB Languages
 LSB Imaging
 LSB Trial Use

Standardit 
LSB-standardi sisältää muita standardeja kuten POSIX, mutta se ei määrittele Unixia ja Unixin kaltaisia käyttöjärjestelmiä. Se määrittelee sovelluksien binäärirajapinnat (ABI) ajoympäristölle.

Pääasialliset LSB:n sisältämät standardit ovat:
 Single UNIX Specification (SUS)
 Standard C++ ABI
 System V ABI
Muita hyödynnettäviä standardeja ovat:
 Pluggable Authentication Modules (PAM)
 X11
 Työpöytäympäristöjen standardit (mm. X/Open Portability Guide, XPG)
 Filesystem Hierarchy Standard
 RPM-pakettitiedostomuoto

Toteutukset 
LSB määrittelee rakenteet yksittäisten kirjastojen rajapintojen saatavuudelle ja yksilöi tiedostorakenteet jokaiselle rajapinnalle. Nämä komponentit sisältävät muun muassa jaetut kirjastot ohjelmoijille (mukaan lukien C++), tiedostojärjestelmän rakenteen (määritellen mistä löytyvät mitkäkin tiedostot), julkisten rajapintojen toimintatavat, ohjelmistojen paketoinnin tiedot sekä ohjelmiston toiminnan esi- ja jälkiasennuksessa.

Yhteensopivuus 
LSB-standardi takaa versiosta LSB 3.0 alkaen taaksepäinyhteensopivuuden binääritasolla (ABI). Toisin sanoen ohjelmisto, joka on tehty LSB X.Y (X.Y >=3.0) -versiolle toimii Linux-käyttöjärjestelmän jakelupaketissa, joka on sertifioitu tai yhteensopiva vastaavan LSB-version tai uudemman kanssa. Tämä tarkoittaa, että LSB 3.0 versiolle tehty ohjelmisto toimii myös LSB 3.1, 3.2, 3.3 sekä 4.0 version kanssa yhteensopivan tai sertifioidun jakelupaketin kanssa.

Taatakseen yhteensopivuuden taaksepäin LSB-standardin kehityspolitiikan mukaisesti rajapintoja ei poisteta standardista, vaan ainoastaan lisätään. Kuitenkin LSB-standardista poistetaan rajapintoja tietyn säännön mukaisesti tarvittaessa. Kun rajapinta on ollut viimeisissä kolmessa suuressa versiossa (LSB X.Y missä suuri versio on X:n muutos) tai noin kuuden vuoden välein. Aikaisemmissa LSB-standardin versioissa 1.x ja 2.x taattiin binääriyhteensopivuus vain suurten versioiden aikana. Vasta 3.x version myötä on taattu yhteensopivuus myös niiden välillä.

ISO-standardi 
ISO-standardin osat:
 ISO/IEC 23360-1:2006 Linux Standard Base (LSB) core specification 3.1 – Part 1: Generic specification
 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 S390 architecture
 ISO/IEC 23360-8:2006 Linux Standard Base (LSB) core specification 3.1 – Part 8: Specification for S390X architecture

Lisäksi ISO/IEC TR 24715:2006 määrittää LSB- ja POSIX-standardin väliset konfliktikohdat.

LSB versio 5.0 on ladattavissa ilmaiseksi ISO:n verkkosivuilta:
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

Lähteet

Aiheesta muualla 
 LSB Workgroup 
 LSB Wiki 
 Linux Standard Base Specifications Archive 
 The Linux Assigned Names And Numbers Authority 
 STANDARDS(7) 

Linux
Standardit