目录
概述
后向兼容
版本历史
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定义的内容包括(例如):
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 是第一个打破了对早前版本的后向兼容性的主版本。
LSB已经被注册为一个官方的ISO标准,它的主要部分包括:
此外,还有一份 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版的认证的,其中比较著名的有:
而拿到4.1版认证的就更少了
LSB主要被诟病的方面是,不采纳来自它的成员公司范围之外的项目的输入,尤其是Debian项目。
LSB规定了软件包应当要么以一种遵从LSB规范的安装器的方式交付,或(推荐)以受到PRM软件包管理器格式的形式限制的方式来交付。
对软件包格式的这种选择,排除了对许多其它现有的、与RPM不兼容的软件包格式的使用。为了解决这个问题,该标准并不强制要求系统为其自身的软件包所使用的软件包的格式,仅仅要求必须支持RPM,从而允许来自第三方发行者的软件包可以被安装在一个符合该标准的系统上。
早先的Debian版本包含了可选的对LSB的支持,包括:
要想使用外来的、遵从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)进行分析并提供指导。