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:
windows_amd64_mingwwasm_ehundwasm_mvp(siehe Erweiterungen von DuckDB-Wasm)
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:
duckdb -unsignedNun 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_extensionSiehe 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.