Auf dieser Seite

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:

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_ON fü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:

© 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.