Linux Standard Base

Kommerzielle Interessen unterschiedlicher Hersteller verhinderten in der Vergangenheit erfolgreich ein UNIX OS – stattdessen kochte jeder UNIX Hersteller sein eigenes Süppchen…. bis es verkochte.

Obwohl die Grundideen die gleichen waren und POSIX zumindest noch Sourcekompatibilität gewährleistete, gab es keine Binärkompatibilität und somit keinen UNIX Massenmarkt.

Das Resultat ist bekannt. Ausser Sun Solaris und IBM AIX, die sich in Server-Nischenmärkten noch halten könnten, sind alle Anbieter verschwunden (oder verschwinden gerade)

Damit dieses Schicksal Linux erspart bleibt, wurde vor einiger Zeit die Linux Standard Base gegründet. Diese ist unter der Linux Foundation angesiedelt. Das Projekt wird innerhalb des Linux Developer Network Portals gehostet.

http://ldn.linuxfoundation.org/lsb

LSB ist mittlerweile ein vollwertiger ISO Standard: ISO/IEC 23360

Der Standard schreibt Interfaces vor, die für die Entwicklung vorhanden sein müssen, sowie Libraries mit Ihren zugehörigen Symbolen (teilw. auch Versionierung) für die Entwicklung und zur Laufzeit.

Um breitmöglichste Akzeptanz und Kompatibilität zu erreichen setzt die LSB auf schon vorhandene Standards auf:

  • POSIX
  • Single UNIX Specification (SUS)
  • C++ ABI
  • System V ABI
  • PAM
  • X11
  • freedesktop.org

Ab Version 3.0 stellt die LSB Rückwärtskompatibilität zur Verfügung – somit laufen LSB 3.0 zertifizierte Produkte auch auf einem LSB 3.1,3.2 oder 4.0 System. Daraus lässt sich folgern, dass Interfaces nur noch dazukommen, aber nicht mehr entfernt werden dürfen. Eine Beseitigung von Interfaces darf nur noch nach Kennung einer Deprecation über drei Major Versions erfolgen.

Die wichtigsten von der LSB zur Verfügung gestellten Tools sind:

  • Linux Application Checker
  • LSB Database Navigator
  • LSB Build Tools

Äusserst wichtig ist das Analysieren der verwendeten Symbole in Shared Libraries oder Binaries. Eine eigenen Überblick verschafft man sich am besten mit dem Kommandotool objdump ,z.B. mit:

objdump --private-headers /usr/lib/libstdc++.so.6

SONAME bestimmt im Suffix die Hauptversion der Library, gegen die gelinkt wird (d.h. Binaries die gegen die C++ Library linken, tun das gegenüber Version 6 und nicht etwa 6.0 oder gar 6.0.5)

Nach dem Dynamic Section Block kommt dann der Version definitions Bereich, in dem die Symbol Versionen gelistet sind. In dieser Datei sind bspw. alle Symbol Information GLIBCXX der Versionen 3.4.0 – 3.4.8 vorhanden.

Danach folgt schliesslich der Bereich Version References in dem die benötigten Symbolinformation der gelinkten Libraries aufgelistet sind.

Der Linux Application Checker analysiert die Symbole in den Shared Libraries. Die strikte Überprüfung hat zur Folge, dass nur Libraries in die LSB aufgenommen werden können, welche die Abwärtskompatibilität der LSB respektieren.

Einen kompletten Überblick über Libaries, deren Symbole, Interfaces und Kommandotools welche den Standard abdeckt, liefert der sog. LSB Navigator. Es handelt sich dabei um eine Informationsdatenbank, die neben den o.g. Informationen auch noch Herkunft und Versionierung aufführt.

Mit dem neuen, verbesserten LSB ist es mittlerweile möglich mehrstufig portabel zu Programmieren, je nach dem ob einem nur ad-hoc oder zertifizierte Portabilität wichtig ist. Nachdem man allg. Portabilitätsgrundsätze beachtet hat, wären die jeweiligen Stufen:

  1. Minimalportabilität durch Application Checker gewährleisten
  2. Gesteigerte Portabilität durch die LSB Build Tools
  3. Maximale Portabilität durch ein LSB Zertifikat

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.