Zum Inhalt springen

Verteilung von Erweiterungen

Plattformen

Erweiterungsbinaries werden für mehrere Plattformen verteilt (siehe unten). Für Plattformen, auf denen Pakete für bestimmte Erweiterungen nicht verfügbar sind, können Benutzer sie aus dem Quellcode bauen und die entstehenden Binaries manuell installieren.

Alle offiziellen Erweiterungen werden für die folgenden Plattformen verteilt.

Plattformname Betriebssystem Architektur CPU-Typen
linux_amd64 Linux x86_64 (AMD64)
linux_arm64 Linux AArch64 (ARM64) AWS Graviton, Snapdragon usw.
osx_amd64 macOS x86_64 (AMD64) Intel
osx_arm64 macOS AArch64 (ARM64) Apple Silicon M1, M2 usw.
windows_amd64 Windows x86_64 (AMD64) Intel, AMD usw.
windows_arm64 Windows AArch64 (ARM64) Copilot+ PC mit Qualcomm-CPU

Einige Erweiterungen werden für die folgenden Plattformen verteilt:

Für Plattformen außerhalb der oben aufgeführten verteilen wir Erweiterungen nicht offiziell (z. B. linux_arm64_android).

Signierung von Erweiterungen

Signierte Erweiterungen

Erweiterungen können mit einem kryptografischen Schlüssel signiert werden. Standardmäßig verwendet DuckDB seine eingebauten öffentlichen Schlüssel, um die Integrität von Erweiterungen zu prüfen, bevor sie geladen werden. Alle Core- und Community-Erweiterungen werden vom DuckDB-Team signiert.

Das Signieren der Erweiterung vereinfacht ihre Verteilung; deshalb können sie über HTTP ohne HTTPS verteilt werden, das selbst über eine Erweiterung unterstützt wird (httpfs).

Unsignierte Erweiterungen

Warning Laden Sie unsignierte Erweiterungen nur aus Quellen, denen Sie vertrauen. Vermeiden Sie das Laden unsignierter Erweiterungen über HTTP. Konsultieren Sie die Seite zur Absicherung von DuckDB für Leitlinien, wie Sie DuckDB sicher einrichten.

Wenn Sie eigene Erweiterungen oder Erweiterungen von Dritten laden möchten, müssen Sie das Flag allow_unsigned_extensions aktivieren. Um unsignierte Erweiterungen mit dem CLI-Client zu laden, übergeben Sie ihm beim Start das Flag -unsigned:

Terminal window
duckdb -unsigned

Nun kann jede Erweiterung geladen werden, signiert oder nicht:

LOAD './some/local/ext.duckdb_extension';

Für Client-APIs muss die Datenbankkonfigurationsoption allow_unsigned_extensions gesetzt werden, siehe die jeweiligen Client-API-Dokumente. Für den Python-Client siehe beispielsweise den Abschnitt „Loading and Installing Extensions“ in der Python-API-Dokumentation.

Binäre Kompatibilität

Um Probleme mit binärer Kompatibilität zu vermeiden, sind die von DuckDB verteilten Binärerweiterungen sowohl an eine bestimmte DuckDB-Version als auch an eine Plattform gebunden. Das bedeutet, dass DuckDB automatisch die binäre Kompatibilität zwischen sich und einer ladbaren Erweiterung erkennen kann. Beim Versuch, eine Erweiterung zu laden, die für eine andere Version oder Plattform kompiliert wurde, wirft DuckDB einen Fehler und verweigert das Laden der Erweiterung.

Ein eigenes Repository anlegen

Sie können ein eigenes DuckDB-Erweiterungs-Repository anlegen. Ein DuckDB-Repository ist ein Verzeichnis auf Basis von HTTP, HTTPS, S3 oder lokalen Dateien, das die Erweiterungsdateien in einer bestimmten Struktur bereitstellt. Diese Struktur ist im Abschnitt „Erweiterungen direkt von S3 herunterladen“ beschrieben und ist dieselbe für lokale Pfade und Remote-Server, zum Beispiel:

base_repository_path_or_url
└── v1.0.0
└── osx_arm64
├── autocomplete.duckdb_extension
├── httpfs.duckdb_extension
├── icu.duckdb_extension
├── inet.duckdb_extension
├── json.duckdb_extension
├── parquet.duckdb_extension
├── tpcds.duckdb_extension
├── tpcds.duckdb_extension
└── tpch.duckdb_extension

Siehe das Repository extension-template für den gesamten nötigen Code und die Skripte, um ein Repository einzurichten.

Beim Installieren einer Erweiterung aus einem eigenen Repository sucht DuckDB sowohl nach einer gzip-komprimierten als auch nach einer unkomprimierten Version. Zum Beispiel:

INSTALL icu FROM '⟨custom_repository⟩';

Die Ausführung dieser Anweisung sucht zuerst nach icu.duckdb_extension.gz, dann nach icu.duckdb_extension in der Verzeichnisstruktur des Repositorys.

Wird das eigene Repository über HTTPS oder S3 bereitgestellt, ist die Erweiterung httpfs erforderlich. DuckDB versucht, die Erweiterung httpfs automatisch zu laden, wenn eine Installation über HTTPS oder S3 versucht wird.