Software-Materialliste
Ein Software Bill of Materials (SBOM) Dokument ist eine Erklärung der installierten Dateien, Copyrights, Lizenzen, Versionen, Quellcode-Repositories und anderer relevanter Informationen über eine Qt-Installation. Die SBOM-Dokumente erleichtern das Management der Lieferkette, indem sie den Qt-Benutzern und anderen interessierten Parteien Informationen über die Komponenten zur Verfügung stellen. Die SBOM-Dokumente von Qt sind besonders nützlich für die Einhaltung von Lizenzbestimmungen 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. Die Qt Online Installer legt die SBOM-Dokumente in einem sbom Verzeichnis ab, das sich im Installationsverzeichnis der jeweiligen Qt-Version befindet. Für die Qt 6.11.0 Android arm64-v8a-Installation befinden sich die SBOM-Dokumente zum Beispiel unter:
<INSTALL_DIR>/6.11.0/android_arm64_v8a/sbom/
Um SBOM-Dokumente selbst aus den Qt-Quellen zu generieren, setzen Sie -sbom als configure-Option.
Zum Beispiel während des configure-Schrittes:
./configure -sbom
Die Erzeugung von SBOM-Dokumenten wird dann Teil der regulären Qt-Installation:
ninja install cmake --install .
Dieser Build-Prozess erzeugt SBOM-Dokumente im JSON- und tag:value -Format, wie vom SPDX-Format vorgegeben.
Ab Qt 6.11 erzeugt der Build-Prozess optional CycloneDX-SBOM-Dokumente.
Siehe Qt-Quellen bauen und Qt-Konfigurationsoptionen für weitere Informationen über den Qt-Build-Prozess.
Für Qt-Entwickler und -Maintainer bietet das SBOM-Wiki spezifische Informationen zur Erstellung von SBOM-Dokumenten.
REUSE-konforme Qt-Module
Qt-Module sind ab Qt 6.9 REUSE-kompatibel. Insbesondere die Lizenzdokumentation und die Lizenzprüfung sind Teil des Qt-Entwicklungsprozesses. Verschiedene Werkzeuge prüfen Qt-Repositories auf Lizenzen in Dateien oder extern in REUSE.toml-Dateien.
Das reuse-tool prüft auf REUSE-Konformität und generiert Source-SBOMs. Ein internes Tool prüft, ob die generierten Quell-SBOM-Dateien mit der Qt-Lizenzspezifikation übereinstimmen.
Weitere Informationen über die Dokumentation der Lizenzen in den Qt-Quellen finden Sie im Folgenden:
SPDX-Format
Die SBOM-Dokumente liegen im SPDX 2.3 Format vor. Ein Dokument beginnt mit Informationen über das Qt-Modul. Es folgen SPDX-Pakete als separate Einträge.
Für eine Qt-Installation kann ein SPDX-Paket ein:
- Qt-Modul
- Qt-Plugin - zum Beispiel Plattform-Plugins
- Qt-Werkzeug - zum Beispiel moc
- Qt-Anwendung - zum Beispiel, Qt Widgets Designer
- Komponente eines Drittanbieters - siehe in Qt verwendeter Code von Drittanbietern
- Systembibliotheks-Abhängigkeit - Qt Configure Options
Ein SPDX-Paket enthält in der Regel mindestens:
- Paketname, Version, Herstellername und Build-Informationen
- Qt License Attribution - ein Qt-Produkt kann unter verschiedenen kommerziellen oder Open-Source-Lizenzen stehen. Zum Beispiel kann ein Paket mehrere abgeschlossene Lizenzen auflisten:
LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
Die Qt-Lizenzierung enthält weitere Informationen über Lizenzierungsoptionen.
- Copyright-Hinweise - SBOM-Dokumente enthalten Copyrights von Qt-Quellen und Copyrights von Drittanbietern oder Autoren.
- CPE (Common Platform Enumeration) - ein Benennungsschema zur Identifizierung von Paketen. Für Qt ist das SBOM-CPE-Format typisch:
cpe:<cpe_version>:<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>:<sw_edition>:<target_sw>:<target_hw>:<other>
Eine Beispielkennung für ein Qt Network Autorisierungspaket ist:
cpe:2.3:a:qt:qtnetworkauth:6.11.0:*:*:*:*:*:*:*
Weitere Informationen finden Sie auf der Seite CPE-Spezifikation.
- PURL (Paket-URL) - eine Alternative zu CPE, PURL ist ein Bezeichnungsschema, das das folgende Format verwendet:
scheme:type/namespace/name@version?qualifiers#subpath
Ein Beispiel für eine PURL für ein Paket ist:
pkg:generic/TheQtCompany/qtnetworkauth@6.11.0
Weitere Informationen finden Sie auf der Seite Paket-URL.
- Paketbeziehungen zwischen Paketen wie z. B. Abhängigkeiten.
Zum Beispiel die
DEPENDS_ONfür die Auflistung einer Abhängigkeitsbeziehung. In Klausel 11 der SPDX 2.3 finden Sie eine Liste der gültigen Beziehungstypen.
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 Downloadort
- Verwendung in Qt
- Lizenz- und Copyright-Informationen
- Ob die Komponente sicherheitskritisch ist - der Code kann nicht vertrauenswürdigen Code verarbeiten
SPDX SBOM Beispiel
Es folgt ein Beispiel für ein SPDX SBOM-Dokument für das Modul Qt Network Authorization. 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 andere 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-NetworkAuth
CycloneDX Format
Ab Qt 6.11 erstellt der Build-Prozess optional SBOM-Dokumente im CycloneDX v1.6 Format.
Um die CycloneDX-Erzeugung zu verlangen, konfigurieren Sie Qt mit:
./configure -sbom -sbom-cyclonedx-v1_6 -sbom-cyclonedx-v1_6-required
Die Erzeugung von CycloneDX-Dokumenten erfordert die folgenden Abhängigkeiten:
- 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]' tomli
CycloneDX-Dokumente bieten ähnliche Informationen wie SPDX-Dokumente, einschließlich Komponenten, Lizenzen, Abhängigkeiten und Sicherheits-Metadaten.
Im Vergleich zu SPDX enthalten die CycloneDX-Informationen jedoch weniger Details zu einigen Bereichen wie Lizenzen und Beziehungstypen.
Installierte CycloneDX SBOM-Dokumente haben Dateinamen im Format: <module>-<version>.cdx.json.
CycloneDX SBOM Beispiel
Nachfolgend ein Beispiel für ein CycloneDX SBOM-Dokument für das Modul Qt Network Authorization. Der SBOM-Dateiname lautet qtnetworkauth-6.11.0.cdx.json und befindet sich im Verzeichnis sbom der Installation. Beachten Sie, dass das SBOM-Dokument mehrere andere 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 kompiliert mit meta-qt6
Boot to Qt verwendet die meta-qt6-Schicht, um alle Qt-Module zu bauen, und die generierten SBOM-Dokumente sind als SPDX-Dateien verfügbar, wenn Boot to Qt über Qt Online Installer installiert wird. Der Installationspfad hängt von der Qt-Version und der Zielhardware ab.
Für das Raspberry Pi-Ziel sind die SBOM .spdx-Dokumente zum Beispiel unter:
<INSTALL_DIR>/6.11.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 - Erzeugen von SBOM-Dokumenten aus Qt-Quellen
- 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.