LSB:Linux标准规范

目录

概述

后向兼容

版本历史

ISO标准

业界采纳情况

采用RPM软件包格式

在Debian上的限制

遵从性测试套件的质量


 

概述

Linux标准规范(Linux Standard Base,简称LSB),是一个联合项目,由Linux基金会组织架构下的若干Linux发行版项目组成,目的是将该软件系统的结构——包括Linux内核中所使用的文件系统标准(Filesystem Hierarchy Standard,简称FHS)——进行标准化。LSB基于POSIX规范、单一UNIX规范(Single UNIX Specification,简称SUS),以及若干其他的开放式规范,但是在一些特定的方面又扩展了它们。

根据LSB的描述:

LSB的目的是为了开发和促进一系列开放式的标准,这些标准将会提升各个不同的Linux发行版之间的兼容性,并让软件应用程序可以在任意满足该条件的系统上运行——甚至在不修改二进制文件的情况下都可以。此外,LSB将会帮助协调那些招募软件供应商来为Linux操作系统移植和开发软件的工作。

LSB遵从性可以通过一个认证过程来为一个产品进行认证。

LSB定义的内容包括(例如):

  • 标准库
  • 一系列命令和工具(在POSIX基础上进行了扩展)
  • 文件系统层级结构
  • 运行级别
  • 打印系统
  • 包含假脱机(spoolers),诸如CPUS和类似Foomatic这样的工具
  • 若干对X Window系统的扩展

 

LSB还定义了引导工具(boot facilities),例如$local_fs, $network,它们被用于指出在System V风格的初始化脚本中的服务依赖关系。一个位于脚本开头的、机器可读的注释块,提供了对于确定“初始化过程应该在哪个点上调用该脚本”的必要信息。该注释块被称为LSB头。

在许多系统中,可以使用系统自带的“lsb_release -a”命令来获取关于LSB版本的详细信息,或者如果系统没有自带的话,可以安装相关的软件包来使用这个命令。例如,在红帽系列的发行版中,可以安装redhad-lsb包,而Debian系列则可以安装lsb-release软件包。

 

后向兼容

LSB被设计为“二进制兼容的”,并且为各个独立的软件供应商而推出了一个稳定的应用程序二进制接口(Application Binary Interface,简称ABI)。为了实现后向兼容,每个后续的版本都是纯累加的(purely additive)。换句话说,只会增加接口,而不会删除接口。如果一个接口被从LSB中移除,则LSB会采用一个“接口弃用策略”(interface deprecation policy),来让应用程序开发者足够有足够的时间去做适配。

这使得开发者可以在一个给定时间范围内对LSB有足够的信任,同时有时间对修改工作进行计划,而不会感到突然。接口只有在三个以上的主版本中持续被标记为“弃用”(deprecated),才会被移除。三个主版本的周期大约是11年。

LSB 5.0 是第一个打破了对早前版本的后向兼容性的主版本。

 

版本历史

  • 1.0: 2001年06月29日发布首个版本
  • 1.1: 2002年01月22日发布。增加了特定硬件的规范(针对惠普/英特尔安腾处理器的IA-32)
  • 1.2: 2002年06月28日发布。增加了特定硬件的规范(针对IBM的32位 PowerPC处理器)。从2002年07月开始认证。
  • 1.2.1: 2002年10月发布,增加了安腾(Itanium)处理器的支持。
  • 1.3: 2002年12月17日发布。增加了特定硬件的规范,包括安腾、企业级系统架构(Enterprise System Architecture,简称ESA)/390、z/架构(z/Architecture)
  • 2.0: 2004年08月31日发布
    • LSB被模块化,分成LSB-核心(Core)、LSB-CXX、LSB-图形(Graphics)、LSB-I18n(即,国际化与本地化,当时未发布)
    • 新的特定硬件的规范,针对IBM的PowerPC 64位处理器,以及AMD64
    • 与单一UNIX规范(SUS)第3版同步
  • 2.0.1:2004年10月21日发布,LSB 2.0的ISO版,包括用于所有硬件架构的规范(LSB-图形除外,它只有一个通用的版本)
  • 2.1:2005年03月11日发布
  • 3.0:2005年07月01日发布,部分库变更包括:
    • GNU C库第2.3.4版
    • C++ ABI(应用程序二进制接口)被更改为使用gcc 3.4版的接口
    • 核心规范被更新到ISO POSIX (2003)
    • 技术勘误(Corrigenda)1:2005
  • 3.1:2005年10月31日发布。该版本被作为ISO/IEC 23360标准提交
  • 3.2:2008年01月28日发布。该版本被作为ISO/IEC 23360标准提交
  • 4.0: Released November 11, 2008. This version contains the following features:
  • 4.0:2008年11月11日发布。该版本包含如下功能:
    • GNU C库第2.4版
    • 与LSB 3.x的二进制兼容性
    • 更易于使用SDK
    • 支持更新版本的GTK(GNOME ToolKit,一种图形化库)和“开罗图形化库”(Cairo graphical libraries)
    • Java(可选模块)
    • 更简单的创建符合LSB标准的RPM软件包的方式
    • 加密API,通过网络安全服务(Network Security Services,简称NSS)库实现(可选模块)
  • 4.1:2011年02月16日发布:
    • 删除Java
    • 来自LSB 4.0的“试用”模块,包括多媒体(ALSA)、安全(NSS),以及桌面杂项(xdg-utils),都被推荐为“需要的”子模块
    • 更新了GTK+、开罗(Cairo)和CUPS(公共UNIX打印系统)库
    • 增加了3个新的测试套件
  • 5.0:2015年06月02日发布
    • 首个打破与之前版本后向兼容的大版本(与LSB 3.0兼容,与LSB 3.1及其早期版本大部分兼容,有少量例外)
    • 加入了在FHS(文件层级标准) 2.0中所做的更改
    • Qt 3库被移除
    • 改进了模块策略;LSB被划分为:LSB核心(Core)、LSB桌面(Desktop)、LSB语言(Language)、LSB图像(Imaging),以及LSB试用(Trial Use)

 

ISO标准

LSB已经被注册为一个官方的ISO标准,它的主要部分包括:

  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书(Core specification) 3.1 - 第1部分:一般规范
  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书 3.1 - 第2部分:关于IA-32架构的规格说明书
  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书 3.1 - 第3部分:关于IA-64架构的规格说明书
  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书 3.1 - 第4部分:关于AMD64架构的规格说明书
  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书 3.1 - 第5部分:关于PPC32架构的规格说明书
  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书 3.1 - 第6部分:关于PPC64架构的规格说明书
  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书 3.1 - 第7部分:关于S390架构的规格说明书
  • ISO/IEC 23360-1:2006 Linux标准规范(LSB)核心规格说明书 3.1 - 第8部分:关于S390X架构的规格说明书

 

此外,还有一份 ISO/IEC TR 24715:2006,它指明了ISO/IEC 23360(Linux标准规范 3.1 规格说明书)与ISO/IEC 9945:2003 (POSIX)国际标准之间的区别

可以从ISO网站免费下载ISO/IEC 23360和ISO/IEC TR 24715

 

业界采纳情况

尽管LSB标准并无竞争对手,但是只有很少的Linux发行版遵从该标准。例如,只有21个版本的发行版是拿到LSB 4.0版的认证的,其中比较著名的有:

  • 红旗Linux桌面版6.0
  • 红帽企业版Linux 6.0
  • SUSE Linux企业版 11
  • Ubuntu 3.04 (Jaunty Jackalope / 快活的鹿角兔)

而拿到4.1版认证的就更少了

LSB主要被诟病的方面是,不采纳来自它的成员公司范围之外的项目的输入,尤其是Debian项目。

 

采用RPM软件包格式

LSB规定了软件包应当要么以一种遵从LSB规范的安装器的方式交付,或(推荐)以受到PRM软件包管理器格式的形式限制的方式来交付。

对软件包格式的这种选择,排除了对许多其它现有的、与RPM不兼容的软件包格式的使用。为了解决这个问题,该标准并不强制要求系统为其自身的软件包所使用的软件包的格式,仅仅要求必须支持RPM,从而允许来自第三方发行者的软件包可以被安装在一个符合该标准的系统上。

 

在Debian上的限制

早先的Debian版本包含了可选的对LSB的支持,包括:

  • Debian 3.0 “木质”(woody),2002年07月19日发布,支持 LSB 1.1
  • Debian 3.1 “中士”(sarge),2005年06月06日发布,支持 LSB 2.0
  • Debian 4.0 “刻蚀”(etch),2007年04月08日发布,支持 LSB 3.1
  • Debian 5.0 “兰尼”(lenny),2009年02月14日发布,支持 LSB 3.2
  • Debian 7 “喘息”(wheezy),2013年05月04日发布,支持LSB 4.1

 

要想使用外来的、遵从LSB标准的PRM包,最终用户需要使用Debian的“外星人”(Alien)程序,来将它们转化为本地的软件包格式,然后安装它们。

符合LSB规范的RPM格式,是RPM功能的一个受限的子集——它是为了禁止使用那些无法使用“外星人”(Alien)或其他软件包转换工具将其转换为“.deb”的RPM功能,反之亦然,那些其中一方所不具备的功能,都会受限。在实践中,并非所有的Linux二进制软件包都必须是遵从LSB规范的,因此尽管其中的大部分都可以在.rpm和.deb之间转换,但这个操作仅仅限制一部分软件包。

通过使用“外星人”(Alien),Debian在各方面都是LSB兼容的,但是根据他们的LSB软件包的描述,该软件包的存在“并不暗示我们相信Debian完全遵从Linux标准规范,并且不应当被理解为一份关于Debian遵从LSB的声明”。

Debian曾经努力想要遵循LSB,但是收到了诸多限制。然而,这项工作在大约2015年07月的时候,因为在该项目中没有人对此感兴趣,也没有足够的人手,因此就停止了。2015年09月,Debian项目正式确认,尽管对文件系统层级结构标准(Filesystem Hierarchy Standard,简称FHS)的支持仍将继续,但是对LSB的支持已经被放弃了。2015年11月,Ubuntu追随了Debian的这项决定。

 

遵从性测试套件的质量

另外,遵从性测试套件常被诟病,因为里面有很多错误和不完整的地方。其中一个比较著名的事件时,在2005年乌尔里奇·德里普尔(Ulrich Drepper)批评LSB的测试用例写得很烂,测试用例在面对一些实现错误的行为时,仍然能正常工作,会导致同样得到LSB认证的不同发行版之间存在不兼容性。另外还有一些人遵循了这些测试用例,却没有通过LSB认证。他同时抨击了该标准缺乏应用测试,指出仅仅测试发行版本身,永远无法解决那些依赖于由具体实现来定义的行为的应用的问题。

为了帮助那些在他们关于可移植性的工作中考虑LSB认证的供应商,Linux基金会资助了一个工具,可以就他们的超出LSB范围的符号(symbol)和库(library)进行分析并提供指导。

你可能感兴趣的:(LSB:Linux标准规范)