{"id":120,"date":"2009-05-05T13:22:40","date_gmt":"2009-05-05T12:22:40","guid":{"rendered":"http:\/\/www.instruyete.org\/?p=120"},"modified":"2009-05-05T13:22:40","modified_gmt":"2009-05-05T12:22:40","slug":"linux-standard-base","status":"publish","type":"post","link":"https:\/\/www.instruyete.org\/?p=120","title":{"rendered":"Linux Standard Base"},"content":{"rendered":"<p>Kommerzielle Interessen unterschiedlicher Hersteller verhinderten in der Vergangenheit erfolgreich <em>ein<\/em> UNIX OS &#8211; stattdessen kochte jeder UNIX Hersteller sein eigenes S\u00fcppchen&#8230;. bis es verkochte.<\/p>\n<p>Obwohl die Grundideen die gleichen waren und <em>POSIX<\/em> zumindest noch Sourcekompatibilit\u00e4t gew\u00e4hrleistete, gab es keine Bin\u00e4rkompatibilit\u00e4t und somit keinen UNIX Massenmarkt.<\/p>\n<p>Das Resultat ist bekannt. Ausser <strong>Sun Solaris<\/strong> und <strong>IBM AIX<\/strong>, die sich in Server-Nischenm\u00e4rkten noch halten k\u00f6nnten, sind alle Anbieter verschwunden (oder verschwinden gerade)<\/p>\n<p>Damit dieses Schicksal <strong>Linux<\/strong> erspart bleibt, wurde vor einiger Zeit die <strong>Linux Standard Base<\/strong> gegr\u00fcndet. Diese ist unter der <a href=\"http:\/\/www.linuxfoundation.org\/\" title=\"Linux Foundation\"><em>Linux Foundation<\/em><\/a> angesiedelt. Das Projekt wird innerhalb des <a href=\"http:\/\/ldn.linuxfoundation.org\/\" title=\"Linux Developer Network\"><em>Linux Developer Network<\/em><\/a> Portals gehostet.<\/p>\n<p><a href=\"http:\/\/ldn.linuxfoundation.org\/lsb\" title=\"Linux Standard Base\">http:\/\/ldn.linuxfoundation.org\/lsb<\/a><\/p>\n<p>LSB ist mittlerweile ein vollwertiger ISO Standard: <strong>ISO\/IEC 23360<\/strong><\/p>\n<p>Der Standard schreibt <em>Interfaces<\/em> vor, die f\u00fcr die Entwicklung vorhanden sein m\u00fcssen, sowie <em>Libraries<\/em> mit Ihren zugeh\u00f6rigen <em>Symbolen<\/em> (teilw. auch Versionierung) f\u00fcr die Entwicklung und zur Laufzeit.<\/p>\n<p>Um breitm\u00f6glichste Akzeptanz und Kompatibilit\u00e4t zu erreichen setzt die LSB auf schon vorhandene Standards auf:<\/p>\n<ul>\n<li>POSIX<\/li>\n<li>Single UNIX Specification (SUS)<\/li>\n<li>C++ ABI<\/li>\n<li>System V ABI<\/li>\n<li>PAM<\/li>\n<li>X11<\/li>\n<li>freedesktop.org<\/li>\n<\/ul>\n<p>Ab Version <strong>3.0<\/strong> stellt die LSB R\u00fcckw\u00e4rtskompatibilit\u00e4t zur Verf\u00fcgung &#8211; somit laufen LSB 3.0 zertifizierte Produkte auch auf einem LSB 3.1,3.2 oder 4.0 System. Daraus l\u00e4sst sich folgern, dass Interfaces nur noch dazukommen, aber nicht mehr entfernt werden d\u00fcrfen. Eine Beseitigung von Interfaces darf nur noch nach Kennung einer <em>Deprecation<\/em> \u00fcber drei Major Versions erfolgen.<\/p>\n<p>Die wichtigsten von der LSB zur Verf\u00fcgung gestellten Tools sind:<\/p>\n<ul>\n<li>Linux Application Checker<\/li>\n<li>LSB Database Navigator<\/li>\n<li>LSB Build Tools<\/li>\n<\/ul>\n<p>\u00c4usserst wichtig ist das Analysieren der verwendeten Symbole in <em>Shared Libraries<\/em> oder <em>Binaries<\/em>. Eine eigenen \u00dcberblick verschafft man sich am besten mit dem Kommandotool <strong>objdump <\/strong>,z.B. mit:<\/p>\n<pre>objdump --private-headers \/usr\/lib\/libstdc++.so.6<\/pre>\n<p><strong>SONAME<\/strong> bestimmt im Suffix die Hauptversion der Library, gegen die gelinkt wird (d.h. Binaries die gegen die C++ Library linken, tun das gegen\u00fcber Version 6 und nicht etwa 6.0 oder gar 6.0.5)<\/p>\n<p>Nach dem <em>Dynamic Section<\/em> Block kommt dann der <em>Version definitions<\/em> Bereich, in dem die Symbol Versionen gelistet sind. In dieser Datei sind bspw. alle Symbol Information <strong>GLIBCXX<\/strong> der Versionen 3.4.0 &#8211; 3.4.8 vorhanden.<\/p>\n<p>Danach folgt schliesslich der Bereich <em>Version References<\/em> in dem die ben\u00f6tigten Symbolinformation der gelinkten Libraries aufgelistet sind.<\/p>\n<p>Der <em>Linux Application Checker<\/em> analysiert die Symbole in den Shared Libraries. Die strikte \u00dcberpr\u00fcfung hat zur Folge, dass nur Libraries in die LSB aufgenommen werden k\u00f6nnen, welche die Abw\u00e4rtskompatibilit\u00e4t der LSB respektieren.<\/p>\n<p>Einen kompletten \u00dcberblick \u00fcber Libaries, deren Symbole, Interfaces und Kommandotools welche den Standard abdeckt, liefert der sog. <a href=\"http:\/\/dev.linuxfoundation.org\/navigator\/commons\/welcome.php\" title=\"LSB Navigator\"><em>LSB Navigator<\/em><\/a>. Es handelt sich dabei um eine Informationsdatenbank, die neben den o.g. Informationen auch noch Herkunft und Versionierung auff\u00fchrt.<\/p>\n<p>Mit dem neuen, verbesserten LSB ist es mittlerweile m\u00f6glich mehrstufig portabel zu Programmieren, je nach dem ob einem nur ad-hoc oder zertifizierte Portabilit\u00e4t wichtig ist. Nachdem man <a href=\"http:\/\/www.instruyete.org\/wp-content\/uploads\/2007\/11\/portabler_code_cc.pdf\" title=\"Portabler Code (CC)\">allg. Portabilit\u00e4tsgrunds\u00e4tze<\/a> beachtet hat, w\u00e4ren die jeweiligen Stufen:<\/p>\n<ol>\n<li>Minimalportabilit\u00e4t durch <em>Application Checker<\/em> gew\u00e4hrleisten<\/li>\n<li>Gesteigerte Portabilit\u00e4t durch die <em>LSB Build Tools<\/em><\/li>\n<li>Maximale Portabilit\u00e4t durch ein <em>LSB Zertifikat<\/em><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Kommerzielle Interessen unterschiedlicher Hersteller verhinderten in der Vergangenheit erfolgreich ein UNIX OS &#8211; stattdessen kochte jeder UNIX Hersteller sein eigenes S\u00fcppchen&#8230;. bis es verkochte. Obwohl die Grundideen die gleichen waren und POSIX zumindest noch Sourcekompatibilit\u00e4t gew\u00e4hrleistete, gab es keine Bin\u00e4rkompatibilit\u00e4t und somit keinen UNIX Massenmarkt. Das Resultat ist bekannt. Ausser Sun Solaris und IBM AIX, &hellip; <a href=\"https:\/\/www.instruyete.org\/?p=120\" class=\"more-link\"><span class=\"screen-reader-text\">Linux Standard Base<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,7],"tags":[],"class_list":["post-120","post","type-post","status-publish","format-standard","hentry","category-linux","category-unix"],"_links":{"self":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=120"}],"version-history":[{"count":0,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/120\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}