Software-Stückliste
Ein Software-Bill-of-Materials-Dokument (SBOM) ist eine Aufstellung der installierten Dateien, Urheberrechte, Lizenzen, Versionen, Quellcode-Repositorys und anderer relevanter Informationen zu einer Qt-Installation. Die SBOM-Dokumente erleichtern das Lieferkettenmanagement, indem sie Qt-Nutzern und anderen interessierten Parteien Informationen zu den Komponenten zur Verfügung stellen. Die SBOM-Dokumente von Qt sind besonders nützlich für die Einhaltung von Lizenzen und das Management von Sicherheitslücken.
Ab Qt 6.8 kann das Build-System von Qt SBOM-Dokumente generieren, die auf verschiedene Plattformen und Build-Konfigurationen zugeschnitten sind. Der Qt Online Installer speichert die SBOM-Dokumente in einem Verzeichnis „ sbom “, das sich im Installationsverzeichnis der jeweiligen Qt-Version befindet. Beispielsweise befinden sich die SBOM-Dokumente für die Installation von Qt 6.12.0 auf Android (arm64-v8a) unter:
<INSTALL_DIR>/6.12.0/android_arm64_v8a/sbom/Um SBOM-Dokumente selbst aus den Qt-Quelltexten zu generieren, legen Sie „ -sbom “ als Konfigurationsoption fest.
Beispielsweise während des „configure“-Schritts:
./configure -sbomDie Erstellung von SBOM-Dokumenten wird dann Teil der regulären Qt-Installation:
ninja install
cmake --install .Dieser Build-Prozess erstellt SBOM-Dokumente im JSON- und „ tag:value “-Format, wie vom SPDX-Format vorgegeben.
Ab Qt 6.11 erstellt der Build-Prozess optional CycloneDX -SBOM-Dokumente.
Weitere Informationen zum Qt-Build-Vorgang finden Sie unter „Qt-Quellcode kompilieren “ und „Qt-Konfigurationsoptionen “.
Für Qt-Entwickler und -Betreuer enthält das SBOM-Wiki spezifische Informationen zur Erstellung von SBOM-Dokumenten.
REUSE-konforme Qt-Module
Qt-Module sind ab Qt 6.9 REUSE-konform. Insbesondere sind die Lizenzdokumentation und Lizenzprüfungen Teil des Qt-Entwicklungsprozesses. Verschiedene Tools überprüfen Qt-Repositorys auf Lizenzen in Dateien oder extern in REUSE.toml-Dateien.
Das reuse-Tool prüft die REUSE-Konformität und generiert Quell-SBOMs. Ein internes Tool überprüft, ob die generierten Quell-SBOM-Dateien der Qt-Lizenzspezifikation entsprechen.
Weitere Informationen zur Lizenzdokumentation in den Qt-Quellcodes finden Sie unter:
SPDX-Format
Die SBOM-Dokumente liegen im SPDX-2.3 -Format vor. Ein Dokument beginnt mit Informationen zum Qt-Modul. SPDX-Pakete folgen als separate Einträge.
Bei einer Qt-Installation kann ein SPDX-Paket Folgendes sein:
- ein Qt-Modul
- ein Qt-Plugin – zum Beispiel Plattform -Plugins
- ein Qt-Tool – zum Beispiel „moc“
- Qt-Anwendung – zum Beispiel „ Qt Widgets Designer“
- Komponente eines Drittanbieters – siehe „In Qt verwendeter Code von Drittanbietern“
- Abhängigkeit von Systembibliotheken – Qt-Konfigurationsoptionen
Ein SPDX-Paket enthält in der Regel mindestens:
- Paketname, Version, Name des Anbieters und Build-Informationen
- Qt-Lizenzhinweis – Ein Qt-Produkt kann unter verschiedenen kommerziellen oder Open-Source-Lizenzen stehen. Beispielsweise kann ein Paket mehrere abgeschlossene Lizenzen auflisten:
LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-onlyWeitere Informationen zu den Lizenzierungsoptionen finden Sie unter „Qt-Lizenzierung “.
- Urheberrechtshinweise – SBOM-Dokumente enthalten Urheberrechtshinweise zum Qt-Quellcode sowie Urheberrechtshinweise von Drittanbietern oder Autoren.
- CPE (Common Platform Enumeration) – Ein Namensschema zur Identifizierung von Paketen. Für Qt lautet das SBOM-CPE-Format in der Regel:
cpe:<cpe_version>:<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>:<sw_edition>:<target_sw>:<target_hw>:<other>Ein Beispiel für einen Bezeichner für ein „Qt Network “-Autorisierungs -Paket lautet:
cpe:2.3:a:qt:qtnetworkauth:6.12.0:*:*:*:*:*:*:*Weitere Informationen finden Sie auf der Seite zur CPE-Spezifikation.
- PURL (Package-URL) – Als Alternative zu CPE ist PURL ein Kennzeichnungsschema, das das folgende Format verwendet:
scheme:type/namespace/name@version?qualifiers#subpathEin Beispiel für eine PURL für ein Paket lautet:
pkg:generic/TheQtCompany/qtnetworkauth@6.12.0Weitere Informationen finden Sie auf der Seite „Paket-URL “.
- Beziehungen zwischen Paketen, wie z. B. Abhängigkeiten.
Beispiel: „
DEPENDS_ON“ zur Auflistung einer Abhängigkeitsbeziehung. Eine Liste der gültigen Beziehungstypen finden Sie in Abschnitt 11 des SPDX 2.3.
SPDX-Pakete von Drittanbietern
Ein SPDX-Paket für eine Komponente eines Drittanbieters enthält in der Regel mindestens:
- Name, Version und Beschreibung
- Homepage und Download-Adresse
- Verwendung in Qt
- Lizenz- und Urheberrechtsinformationen
- Angabe, ob die Komponente sicherheitskritisch ist – der Code verarbeitet möglicherweise nicht vertrauenswürdigen Code
SPDX-SBOM-Beispiel
Im Folgenden finden Sie ein Beispiel für ein SPDX-SBOM-Dokument für das Autorisierungsmodul „Qt Network “. Der Dateiname der SBOM lautet „ qtnetworkauth-6.9.0.spdx “ und befindet sich im Verzeichnis „ sbom “ der Installation. Beachten Sie, dass das SBOM-Dokument mehrere weitere Pakete enthält, die im folgenden Beispiel nicht aufgeführt sind.
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-NetworkAuthCycloneDX-Format
Ab Qt 6.11 erstellt der Build-Prozess optional SBOM-Dokumente im CycloneDX-v1.6 -Format.
Um die Erstellung von CycloneDX-Dokumenten zu erzwingen, konfigurieren Sie Qt wie folgt:
./configure -sbom -sbom-cyclonedx-v1_6 -sbom-cyclonedx-v1_6-requiredFür die Erstellung von CycloneDX-Dokumenten sind folgende Abhängigkeiten erforderlich:
- Python Version 3.9 oder neuer
- Python-Pakete:
- cyclonedx-python-lib[json-validation]
- tomli
Sie können das Python-Tool „ pip “ verwenden, um die erforderlichen Pakete zu installieren:
pip install 'cyclonedx-python-lib[json-validation]' tomliCycloneDX-Dokumente enthalten ähnliche Informationen wie SPDX-Dokumente, darunter Komponenten, Lizenzen, Abhängigkeiten und Sicherheitsmetadaten.
Im Vergleich zu SPDX enthalten die CycloneDX-Informationen in einigen Bereichen, wie Lizenzen und Beziehungstypen, weniger Details.
Installierte CycloneDX-SBOM-Dokumente haben Dateinamen im Format: <module>-<version>.cdx.json.
CycloneDX-SBOM-Beispiel
Im Folgenden finden Sie ein Beispiel für ein CycloneDX-SBOM-Dokument für das Autorisierungsmodul „Qt Network “. Der Dateiname der SBOM lautet „ qtnetworkauth-6.11.0.cdx.json “ und befindet sich im Verzeichnis „ sbom “ der Installation. Beachten Sie, dass das SBOM-Dokument mehrere weitere Komponenten enthält, die im folgenden Beispiel nicht aufgeführt sind.
{
"components": [
{
"bom-ref": "SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth",
"copyright": "Copyright (C) The Qt Company Ltd. and other contributors.",
"cpe": "cpe:2.3:a:qt:qt:6.11.0:*:*:*:*:*:*:*",
"licenses": [
{
"license": {
"acknowledgement": "concluded",
"id": "GPL-3.0-only"
}
}
],
"name": "NetworkAuth",
"properties": [
{
"name": "qt:sbom:entity_type",
"value": "QT_MODULE"
},
{
"name": "qt:sbom:is_qt_entity_type",
"value": "true"
},
{
"name": "spdx:external-reference:package-manager:purl",
"value": "pkg:github/qt/qtnetworkauth?library_name=NetworkAuth#src/oauth"
},
{
"name": "spdx:external-reference:security:cpe23",
"value": "cpe:2.3:a:qt:qtnetworkauth:6.11.0:*:*:*:*:*:*:*"
}
],
"purl": "pkg:generic/TheQtCompany/qtnetworkauth-NetworkAuth?library_name=NetworkAuth&vcs_url=https://code.qt.io/qt/qtnetworkauth.git#src/oauth",
"supplier": {
"name": "TheQtCompany",
"url": [
"https://qt.io"
]
},
"type": "library",
"version": "6.11.0"
}
],
"dependencies": [
{
"dependsOn": [
"SPDXRef-Package-qtbase-qt-module-Core",
"SPDXRef-Package-qtbase-qt-module-Gui",
"SPDXRef-Package-qtbase-qt-module-Network",
"SPDXRef-Package-qtbase-qt-module-PlatformModuleInternal"
],
"ref": "SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth"
}
],
"serialNumber": "urn:uuid:ce0d41b5-0fe8-5383-bf31-ff353a05b8be",
"version": 1,
"$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
"bomFormat": "CycloneDX",
"specVersion": "1.6"
}Yocto-Builds mit meta-qt6
Boot to Qt verwendet die meta-qt6-Schicht zum Erstellen aller Qt-Module, und die generierten SBOM-Dokumente stehen als SPDX-Dateien zur Verfügung, wenn „ Boot to Qt “ über die Qt Online Installer. Der Installationspfad hängt von der Qt-Version und der Zielhardware ab.
Für das Ziel „Raspberry Pi“ befinden sich die SBOM-.spdx-Dokumente beispielsweise unter:
<INSTALL_DIR>/6.12.0/Boot2Qt/raspberrypi-armv8/toolchain/sysroots/cortexa53-poky-linux/usr/lib/sbom/Weitere Informationen finden Sie auf den folgenden Seiten:
Verwandte Themen
- SPDX 2.3
- Qt-Wiki – SBOM – Erstellen von SBOM-Dokumenten aus Qt-Quellcode
- In Qt verwendeter Code von Drittanbietern
© 2026 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.