软件材料清单
软件物料清单 (SBOM) 文档是关于 Qt 安装文件、版权、许可证、版本、源代码库和其他相关信息的声明。SBOM 文档通过向 Qt 用户和其他相关方共享组件信息来促进供应链管理。Qt 的 SBOM 文档对于许可证合规性和安全漏洞管理特别有用。
从 Qt 6.8 开始,Qt 的编译系统可以为不同的平台和编译配置生成 SBOM 文档。该 Qt Online Installer将 SBOM 文档放置在位于相应 Qt 版本安装目录下的sbom
目录中。例如,对于 Qt 6.9.0 Android arm64-v8a 安装程序,SBOM 文档位于:
<INSTALL_DIR>/6.9.0/android_arm64_v8a/sbom/
要自己从 Qt 源生成 SBOM 文档,可将-sbom
设置为configure选项。
例如,在配置步骤中:
./configure -sbom
然后,生成 SBOM 文档就会成为常规 Qt 安装的一部分:
ninja install cmake --install .
该构建过程会按照SPDX格式的规定,以 JSON 和tag:value
格式创建 SBOM 文档。
有关 Qt 联编步骤的更多信息,请参阅联编 Qt源代码和Qt 配置选项。
对于 Qt 开发人员和维护人员,SBOM Wiki提供了创建 SBOM 文档的具体信息。
符合 REUSE 标准的 Qt 模块
从 Qt 6.9 开始,Qt 模块符合REUSE标准。具体而言,许可证文档和许可证检查是 Qt 开发流程的一部分。各种工具会检查 Qt 资源库中的文件或 REUSE.toml 文件中的外部许可证。
reuse-tool检查 REUSE 合规性并生成源代码 SBOM。一个内部工具会检查生成的源 SBOM 文件是否符合 Qt 许可证规范。
有关 Qt 源代码中许可证文档的更多信息,请访问以下网站:
SPDX 格式
SBOM 文档采用SPDX 2.3格式。文档开头是 Qt 模块的相关信息。SPDX 包作为单独的条目紧随其后。
对于 Qt 安装,一个 SPDX 包可能是一个:
- Qt 模块
- Qt 插件--例如平台插件
- Qt 工具--例如moc
- Qt 应用程序--例如 Qt Widgets Designer
- 第三方组件 - 参见Qt 中使用的第三方代码
- 系统库依赖性 -Qt 配置选项
SPDX 软件包通常至少包含以下内容:
- 软件包名称、版本、供应商名称和构建信息
- Qt 许可证归属 - Qt 产品可能采用不同的商业或开源许可证。例如,一个软件包可能会列出多个已缔结的许可证:
LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
Qt Licensing提供了有关许可选项的更多信息。
- 版权声明 - SBOM 文档包括 Qt 源版权和第三方来源或作者的版权。
- CPE(通用平台枚举)- 用于软件包标识的命名方案。对于 Qt,SBOM CPE 格式通常为
cpe:<cpe_version>:<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>:<sw_edition>:<target_sw>:<target_hw>:<other>
Qt Network 授权软件包的标识符示例如下:
cpe:2.3:a:qt:qtnetworkauth:6.9.0:*:*:*:*:*:*:*
更多信息,请参阅CPE 规范页面。
- PURL(软件包 URL)--作为 CPE 的替代方案,PURL 是一种使用以下格式的标识符方案:
scheme:type/namespace/name@version?qualifiers#subpath
软件包的 PURL 示例如下
pkg:generic/TheQtCompany/qtnetworkauth@6.9.0
更多信息,请参阅软件包URL 页面。
- 软件包之间的关系,如依赖关系。
例如,列出依赖关系的
DEPENDS_ON
。有关有效关系类型的列表,请参阅SPDX 2.3第 11 条。
第三方 SPDX 包
第三方组件的 SPDX 包通常至少包含以下内容:
- 名称、版本和说明
- 主页和下载位置
- 在 Qt 中的使用
- 许可证和版权信息
- 该组件是否对安全至关重要--代码可能会处理不受信任的代码
SBOM 示例
以下是Qt Network 授权模块的 SBOM 文档示例。SBOM 文件名为qtnetworkauth-6.9.0.spdx
,位于安装的sbom
目录中。请注意,该 SBOM 文档还包含其他几个未在下例中列出的软件包。
SPDXVersion: SPDX-2.3 DataLicense: CC0-1.0 SPDXID: SPDXRef-DOCUMENT DocumentName: qtnetworkauth-6.9.0 DocumentNamespace: https://qt.io/spdxdocs/qtnetworkauth-6.9.0 Creator: Organization: TheQtCompany Creator: Tool: Qt Build System CreatorComment: <text>This SPDX document was created from CMake 3.27.7, using the qt build system from https://code.qt.io/cgit/qt/qtbase.git/tree/cmake/QtPublicSbomHelpers.cmake</text> Created: 2024-09-19T11:07:23Z ExternalDocumentRef: DocumentRef-qtbase https://qt.io/spdxdocs/qtbase-6.9.0 SHA1: 3dbc51259a07d458524a976da2e9607a76fab7e7 PackageName: NetworkAuth SPDXID: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth PackageDownloadLocation: git://code.qt.io/qt/qtnetworkauth.git PackageVersion: 6.9.0 PackageSupplier: Organization: TheQtCompany PackageLicenseConcluded: LicenseRef-Qt-Commercial OR GPL-3.0-only PackageLicenseDeclared: LicenseRef-Qt-Commercial OR GPL-3.0-only ExternalRef: PACKAGE-MANAGER purl pkg:github/qt/qtnetworkauth?library_name=NetworkAuth#src/oauth ExternalRef: PACKAGE-MANAGER purl pkg:generic/TheQtCompany/qtnetworkauth-NetworkAuth?vcs_url=https://code.qt.io/qt/qtnetworkauth.git&library_name=NetworkAuth#src/oauth FilesAnalyzed: true PackageCopyrightText: <text>Copyright (C) 2024 The Qt Company Ltd.</text> PrimaryPackagePurpose: LIBRARY ExternalRef: SECURITY cpe23Type cpe:2.3:a:qt:qtnetworkauth:6.9.0:*:*:*:*:*:*:* ExternalRef: SECURITY cpe23Type cpe:2.3:a:qt:qt:6.9.0:*:*:*:*:*:*:* Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Core Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-PlatformModuleInternal Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Gui Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Network Relationship: SPDXRef-Package-qtnetworkauth CONTAINS SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth
使用 meta-qt6 构建 Yocto
Boot to Qt使用 meta-qt6 层构建所有 Qt 模块,生成的 SBOM 文档可在通过Boot to Qt 安装时作为 SPDX 文件使用。 Qt Online Installer.安装路径取决于 Qt 版本和目标硬件。
例如,对于 Raspberry Pi 目标机,SBOM .spdx 文档位于.SPDX:
<INSTALL_DIR>/6.9.0/Boot2Qt/raspberrypi-armv8/toolchain/sysroots/cortexa53-poky-linux/usr/lib/sbom/
有关详细信息,请访问以下页面:
相关主题
- SPDX 2.3
- Qt Wiki - SBOM- 从 Qt 源生成 SBOM 文档
- Qt 中使用的第三方代码
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.