# Linux Standard Base

Die Linux Standard Base (LSB) ist eine Arbeitsgruppe der Linux Foundation, die Ende der 1990er ins Leben gerufen wurde. Die LSB definiert Standards für Binärschnittstellen, Programmbibliotheken und andere Betriebssystembestandteile mit dem Ziel, die Kompatibilität zwischen den verschiedenen Linux-Distributionen, z. B. mit Hinblick auf die Lauffähigkeit von Programmen, zu verbessern. Bis heute erfüllt nur ein kleiner Teil der Linux-Distributionen die Anforderungen der LSB. Auch sind die Anforderungen noch nicht umfassend genug, um eine vollständige Betriebssystemplattform zu definieren.

## Motivation

Im Laufe der Geschichte von Linux haben sich eine Reihe von verschiedenen Linux-Distributionen entwickelt, die in vielen Details unterschiedliche Ansätze verfolgten wie beispielsweise inkompatible Software-Paket-Formate, abweichende Verzeichnisstrukturen oder unterschiedliche Versionen der integrierten Softwarepakete. Dadurch sind unabhängige Softwareanbieter (ISVs) gezwungen, ihre Software für jede Distribution spezifisch anzupassen (oder anpassen zu lassen) und separiert anzubieten,- ein enormer Mehraufwand.

## Konzept

Ziel der LSB ist, mit Standards und Richtlinien eine einheitliche binärkompatible Plattform für Softwareinstallationen unter Linux zu erzeugen. Sie macht u. a. Vorgaben, welche grundlegenden Programme und Programmbibliotheken auf einem LSB-konformen System vorhanden sein müssen und legt gemäß dem Filesystem Hierarchy Standard eine Verzeichnisstruktur fest. Die Basis der LSB Standards waren die Standards POSIX und Single UNIX Specification, welche erweitert wurden. Inzwischen weicht der LSB-Standard in einigen Aspekten jedoch Linux-spezifisch von den Open-Group-Unix-Standards ab.

## Geschichte

Das Ende der 1990er ins Leben gerufene LSB-Projekt wollte anfänglich die Standards POSIX und Single UNIX Specification vollständig einhalten und diese nur an einigen Stellen erweitern. Daher hatte die Open Group auch angeboten, eine Zertifizierung für einen US-$ durchzuführen.

### POSIX-Inkompatibilität

Im Jahr 2005 begann die LSB jedoch darauf zu beharren, bestimmte in Linux-Distributionen übliche Abweichungen (Inkompatibilität) nicht zu beseitigen. Seitdem gab es bei dem Prozess zur Erreichung der UNIX-Standardkonformität keine Fortschritte. Das Ziel der vollständigen POSIX- und SUS-Konformität scheint zugunsten der in bestehenden Linux-Systemen üblichen Konventionen aufgegeben worden zu sein. Im Gegenteil, Linus Torvalds hat wiederholt klargemacht, dass er bereit ist, von POSIX zu divergieren, wenn es dafür gute Gründe gibt.

### Drepper-Kritik

2005 wurde die LSB von glibc-Maintainer Ulrich Drepper als ineffektiv kritisiert; konkret monierte er fehlerhafte Testsuiten. Jeff Licquia von der LSB gab zu, dass Tests unvollständig und Code fehlerhaft seien, trotzdem hätten die Tests eine Aussagekraft. Außerdem seien definierte und prüfbare Standards alternativlos für einen freien, interoperablen Softwaremarkt.

## Versionen

Die erste Version 1.0 der LSB umfasste ältere, schon weiter verbreitete Standards. Anfang Januar 2004 wurde die LSB das erste Mal der Internationalen Organisation für Normung (ISO) vorgelegt. Die darauffolgende Version 2.0 unterstützte mehr Architekturen. Die LSB 3.0 zeichnet sich durch Aktualisierungen der bereits bestehenden Standards aus. Anfang November desselben Jahres wurde dann bekannt, dass die ISO die LSB als internationalen Standard anerkannt hatte. Die anerkannte Version ist die Version 2.0.1. Neuere Versionen der LSB sollen folgen.

### Übersichtstabelle

| Version | Datum | Wesentliche Neuerungen |
| 1.0 | 1. Juli 2001 | |
| 2.0 | 15. September 2004 | Neues Application Binary Interface (ABI) für C++ mit Unterstützung für 32- und 64-Bit-Hardware-Architekturen Unterstützung für IBM PowerPC 64, S390 und S390X sowie AMD 64-Bit-Prozessoren |
| 3.0 | 19. September 2005 | Aktualisierung der Application Binary Interface (ABI) für C++ Aufnahme der Echtzeit-Bibliothek librt |
| 3.1 | 31. Oktober 2005 | Unterstützung für GTK+ 2.0 Unterstützung für Qt 3.3 und optional auch Qt 4 Unterstützung für portable Desktop-Anwendungen Modularer Aufbau |
| 3.2 | 28. Januar 2008 | Unterstützung für Perl und Python Zusätzliche Druckschnittstellen Unterstützung für portable Druckertreiber Ersatz der optionalen Module durch Trial-Use-Module, wodurch nun u. a. das ALSA-Soundsystem über Libasound unterstützt wird Primärer Fokus auf Qt 4; Qt 3 wird nicht mehr unterstützt |
| 4.0 | 11. November 2008 | Aufnahme der Standardbibliothek Cairo 1.0.2 Spezifikation für Shellskripte Separates Software Development Kit (SDK) Verschlüsselungsunterstützung für Mozillas Network Security Services (NSS) und Netscape Portable Runtime (NSPR) |
| 4.1 | 3. März 2011 | Update auf GTK+ 2.10.14 und Cairo 1.2.0 Entfernung von Java |
| 5.0 | 3. Juni 2015 | gleichzeitige Veröffentlichung mit dem FHS 3.0 Entfernung von Qt3 Modularisierung in LSB Core, LSB Desktop, LSB Languages, LSB Imaging und LSB Trial Use |