跳转至内容

FOSS 开放标准/Linux 标准基础

来自 Wikibooks,开放世界中的开放书籍

GNU/Linux 操作系统由 Linux 内核本身以及其他系统软件和工具/实用程序组成。大多数系统软件来自 GNU 项目。[1] 此外,为了使操作系统对大多数人有用,它必须与一些应用程序软件一起提供支持。基于社区的历史和对 GNU/Linux 的支持,以及 Linux 内核和 GNU 软件许可证的性质,导致许多人使用内核、来自 GNU 的系统软件以及其他可能的 FOSS 实用程序/工具,添加一些他们认为有用的应用程序软件,并将所有这些组合在一起形成一个可工作的软件包。这个可工作的软件包被称为 GNU/Linux 发行版或发行版。因此,GNU/Linux 操作系统存在于非常多的发行版中。[2] 大量可用的发行版,再加上发行版中包含的大多数软件(如果不是全部)都是 FOSS,因此可以自定义以适应特定发行版的需求,导致了发行版之间相当程度的二进制和配置不兼容性。一些不兼容性问题包括不同的库版本、软件包格式以及目录和文件布局的差异。人们认识到,如果要让 GNU/Linux 作为对专有操作系统的合法替代方案被主流计算完全接受和支持,就需要减少这些不兼容性,以便源代码软件包可以在发行版之间干净地编译,并且二进制版本可以在所有发行版之间正常运行。Linux 标准基础项目 (LSB)[3] 试图通过为 GNU/Linux 指定一个标准来做到这一点。

什么是 Linux 标准基础?

[编辑 | 编辑源代码]

Linux 标准基础是自由标准组织的一个项目。它试图开发和推广一套二进制标准,以提高 GNU/Linux 及其他类似系统之间的兼容性。这些标准也将使软件应用程序能够在任何符合标准的系统上运行。

虽然 LSB 项目的主要目标是通过指定和推广其使用的标准来提高 GNU/Linux 发行版之间的兼容性,但它并不限制规范仅适用于 GNU/Linux 环境。LSB 规范的编写方式使其可以轻松地部署在任何类 UNIX 操作系统上,无论是原生还是作为兼容性层。通过更多工作,它也可以部署在其他操作系统上。

LSB 是一个基于社区的项目,任何人都可以通过参与各种 LSB 邮件列表来为其做出贡献。LSB 标准在 Mandrakesoft、Miracle Linux、Novell、Progeny、Red Flag、Red Hat、IBM、Oracle、Veritas、MySQL 等商业软件供应商中获得了相当好的支持。

Linux 标准基础规范

[编辑 | 编辑源代码]

LSB 包含一个通用的规范和特定于体系结构的规范。特定平台的完整规范由通用规范加上一个体系结构规范组成。当前支持的体系结构为 IA32 和 IA64(Intel 32 位和 64 位处理器)、PPC32 和 PPC64(IBM 的 32 位和 64 位 PowerPC 系列)、S390(IBM 的 S390 处理器)和 S390X(IBM zSeries 处理器)以及 AMD64(AMD 64 位处理器)。

LSB 定义了一组用于源代码的应用程序编程接口 (API) 和用于已编译二进制文件的应用程序二进制接口 (ABI)。符合标准的实现必须支持 LSB 中的所有 ABI,但并非所有源代码级 API。

LSB 分为规范模块,其中规范模块指的是一个或多个函数的唯一集合,这些函数对于特定组的运行时实现具有价值。当前可用的模块有 LSB-Core、LSB-C++、LSB-Graphics 和 LSB-I18N。LSB-Core 和 LSB-C++ 都有通用和特定于体系结构的规范,而 LSB-Graphics 和 LSB-I18N 只有通用规范。表 10 总结了当前可用的模块。[4]

LSB 模块
模块 功能区域 可用体系结构
ELF 通用,特定于处理器的
LSB-Core LSB 通用,特定于处理器的
打包 通用,特定于处理器的
LSB-CXX LSB-C++ 通用,特定于处理器的
LSB-Graphics 图形 通用
LSB-I18n OpenI18n 通用

LSB 的最新版本是 3.0.0。LSB 2.0.1 已提交给 ISO,成为 GNU/Linux 的国际标准。

LSB-Core 规范

[编辑 | 编辑源代码]

这是 Linux 标准基础的核心模块。此模块提供所有符合标准的应用程序和库所依赖的基本系统接口、库和运行时环境。它为以下领域提供规范

  1. 可执行文件和链接格式 (ELF)
  2. 基础库
  3. 实用程序库
  4. 命令和实用程序
  5. 执行环境
  6. 系统初始化
  7. 用户和组
  8. 软件包格式和安装

这些规范广泛使用来自其他机构的现有标准化 API 和 ABI。一些规范性参考包括来自 ISO POSIX、系统 V 接口定义 (SVID) 和文件系统层次结构标准 (FHS) 的参考。

特别是,LSB-Core 规范包含 ISO POSIX (ISO/IEC 9945) 中描述的许多接口[5],并指定这些接口的行为应与 POSIX 标准中规定的完全相同。LSB 的长期计划也与 ISO/IEC 9945 融合。

困扰许多不同 GNU/Linux 发行版的问题之一是软件包分发中使用的各种格式。LSB 通过指定应用程序应以 LSB 中定义的 RPM 软件包格式进行打包,或提供符合 LSB 的安装程序(例如,通过调用 LSB 命令和实用程序)来解决此问题。这意味着虽然鼓励以 Red Hat 软件包管理器 (RPM) 格式提供软件包,但 LSB 并不强制使用 RPM 程序或数据库。

LSB-C++ 模块

[编辑 | 编辑源代码]

这是 LSB 的 C++ 模块。它通过提供系统接口、库和用于使用 C++ 编程语言构建的应用程序的运行时环境来补充核心接口。

规范性引用包括 LSB-Core、IOS POSIX 和 ISO/IEC 14882 C++ 语言标准。

它为以下领域提供规范

  1. 低级系统信息
  2. 基础库
  3. 包信息

LSB-Graphics 模块

[编辑 | 编辑源代码]

此规范定义了符合 LSB 系统上找到的图形界面。规范性引用包括 LSB-Core 以及来自 X.Org 基金会的图形库和规范。

它为以下领域提供规范

  1. 图形库
  2. OpenGL 库
  3. 包信息

LSB-I18N 模块

[编辑 | 编辑源代码]

此模块对应于 OpenI18N 项目的 OpenI18N 全球规范。

Linux 标准基础作为 ISO 标准

[编辑 | 编辑源代码]

LSB 2.0.1 已提交给 ISO,用于通过 ISO PAS(公开可用规范)流程作为 GNU/Linux 的国际标准,并且最近被批准为标准 ISO 23360。

ISO GNU/Linux 标准的可用性是 GNU/Linux 开发中的一个重要里程碑,具有象征意义。它表明 GNU/Linux 操作环境已经成熟,现在已正式被认可为一个成熟的主流计算平台。因此,迄今为止由于对其长期可行性和国际接受性存在不确定性而一直不愿使用 GNU/Linux 的公司和政府,现在有信心将其与其他更成熟的操作系统平等对待。ISO GNU/Linux 标准也将有助于 FOSS 的接受和使用,因为许多 FOSS 产品是在 GNU/Linux 上实现的,并且它可以说是最著名的 FOSS 产品。

Linux 标准基础认证

[编辑 | 编辑源代码]

符合 LSB 的GNU/Linux 发行版可以获得此类认证。LSB 认证计划由 The Open Group[6]代表 Free Standards Group 运行,The Open Group 是一个供应商和技术中立的联盟,以确保中立性和机密性。认证费用保持在最低限度,以鼓励开发人员、独立软件供应商 (ISV) 和 GNU/Linux 发行版获得 LSB 认证。

LSB 认证目前适用于以下方面

  1. LSB 运行时环境
  2. LSB 应用程序
  3. LSB 国际化运行时环境

一旦某个特定产品通过了适用的认证测试套件,开发人员和供应商便会被授予使用 LSB 认证商标的许可证。

  1. GNU 操作系统 https://gnu.ac.cn
  2. DistroWatch http://distrowatch.com
  3. Linux 标准基础项目 http://www.linuxbase.org
  4. LSB,“LSB 3.0 入门” http://www.linuxbase.org/build/lsb30.html
  5. ISO POSIX (2003) http://www.unix.org/version3/
  6. The Open Group http://www.opengroup.org
华夏公益教科书