Zum Inhalt springen

Erweiterungen installieren

Um Core-Erweiterungen von DuckDB zu installieren, verwenden Sie den Befehl INSTALL. Zum Beispiel:

INSTALL httpfs;

Damit wird die Erweiterung aus dem Standard-Repository (core) installiert.

Erweiterungs-Repositories

Standardmäßig werden DuckDB-Erweiterungen aus einem einzigen Repository installiert, das Erweiterungen enthält, die vom DuckDB-Core-Team gebaut und signiert wurden. Das gewährleistet Stabilität und Sicherheit des Kernsatzes an Erweiterungen. Diese Erweiterungen liegen im Standard-Repository core, das auf http://extensions.duckdb.org zeigt.

Neben dem Core-Repository unterstützt DuckDB auch die Installation von Erweiterungen aus anderen Repositories. Das Repository core_nightly enthält beispielsweise Nightly-Builds der Core-Erweiterungen, die für die jeweils aktuelle stabile DuckDB-Version gebaut werden. So können Nutzer neue Funktionen in Erweiterungen ausprobieren, bevor sie offiziell veröffentlicht werden.

Erweiterungen aus verschiedenen Repositories installieren

Um Erweiterungen aus dem Standard-Repository (core) zu installieren, führen Sie aus:

INSTALL httpfs;

Um eine Erweiterung ausdrücklich aus dem Core-Repository zu installieren, führen Sie aus:

INSTALL httpfs FROM core;
-- or
INSTALL httpfs FROM 'http://extensions.duckdb.org';

Um eine Erweiterung aus dem Core-Nightly-Repository zu installieren:

INSTALL spatial FROM core_nightly;
-- or
INSTALL spatial FROM 'http://nightly-extensions.duckdb.org';

Um eine Erweiterung aus einem eigenen Repository zu installieren:

INSTALL ⟨custom_extension⟩ FROM 'https://my-custom-extension-repository';

Alternativ kann die Einstellung custom_extension_repository verwendet werden, um das von DuckDB genutzte Standard-Repository zu ändern:

SET custom_extension_repository = 'http://nightly-extensions.duckdb.org';

DuckDB enthält die folgenden vordefinierten Repositories:

Alias URL Beschreibung
core http://extensions.duckdb.org DuckDB-Core-Erweiterungen
core_nightly http://nightly-extensions.duckdb.org Nightly-Builds für core
community http://community-extensions.duckdb.org DuckDB-Community-Erweiterungen
local_build_debug ./build/debug/repository Repository, das beim Bauen von DuckDB aus dem Quellcode im Debug-Modus entsteht (für die Entwicklung)
local_build_release ./build/release/repository Repository, das beim Bauen von DuckDB aus dem Quellcode im Release-Modus entsteht (für die Entwicklung)

Mit mehreren Repositories arbeiten

Wenn Sie mit Erweiterungen aus verschiedenen Repositories arbeiten, insbesondere wenn Sie core und core_nightly mischen, ist es wichtig, Herkunft und Version der einzelnen Erweiterungen zu kennen. Deshalb speichert DuckDB diese Informationen in den Installationsmetadaten der Erweiterung. Zum Beispiel:

INSTALL httpfs FROM core;
INSTALL aws FROM core_nightly;
SELECT extension_name, extension_version, installed_from, install_mode
FROM duckdb_extensions();

Das ergibt:

extensions_name extensions_version installed_from install_mode
httpfs 62d61a417f core REPOSITORY
aws 42c78d3 core_nightly REPOSITORY

Erzwungenes Installieren zum Aktualisieren von Erweiterungen

Wenn DuckDB eine Erweiterung installiert, wird sie in ein lokales Verzeichnis kopiert, um sie zwischenzuspeichern und weiteren Netzwerkverkehr zu vermeiden. Alle weiteren Aufrufe von INSTALL ⟨extension_name⟩{:.language-sql .highlight} verwenden die lokale Version, statt die Erweiterung erneut herunterzuladen. Um das erneute Herunterladen zu erzwingen, führen Sie aus:

FORCE INSTALL extension_name;

Erzwungenes Installieren kann auch verwendet werden, um eine Erweiterung durch eine Erweiterung desselben Namens aus einem anderen Repository zu überschreiben.

Zum Beispiel wird spatial zuerst aus dem Core-Repository installiert:

INSTALL spatial;

Um diese Installation anschließend mit der spatial-Erweiterung aus dem Repository core_nightly zu überschreiben:

FORCE INSTALL spatial FROM core_nightly;

Zwischen Repositories wechseln

Um das Repository einer Erweiterung zu wechseln, verwenden Sie den Befehl FORCE INSTALL. Wenn Sie beispielsweise httpfs aus dem Repository core_nightly installiert haben, aber wieder core verwenden möchten, führen Sie aus:

FORCE INSTALL httpfs FROM core;

Erweiterungen über Client-APIs installieren

Für viele Clients ist SQL der bevorzugte Weg, Erweiterungen zu laden und zu installieren. Einige Clients haben jedoch eine eigene API zum Installieren und Laden von Erweiterungen. Der Python-Client hat beispielsweise eigene Methoden install_extension(name: str) und load_extension(name: str). Details zu einer bestimmten Client-API finden Sie in der Client-API-Dokumentation

Installationsort

Standardmäßig werden Erweiterungen im Home-Verzeichnis des Benutzers installiert:

~/.duckdb/extensions/⟨duckdb_version⟩/⟨platform_name⟩/

Bei stabilen DuckDB-Releases entspricht ⟨duckdb_version⟩{:.language-sql .highlight} dem Versions-Tag dieses Releases. Bei Nightly-Builds von DuckDB entspricht er dem kurzen Git-Hash des Builds. Die Erweiterungen für DuckDB Version v0.10.3 unter macOS ARM64 (Apple Silicon) werden beispielsweise nach ~/.duckdb/extensions/v0.10.3/osx_arm64/ installiert. Ein Beispielpfad für einen Nightly-Build von DuckDB wäre ~/.duckdb/extensions/fc2e4b26a6/linux_amd64.

Um den Standardort zu ändern, an dem DuckDB seine Erweiterungen speichert, verwenden Sie die Konfigurationsoption extension_directory:

SET extension_directory = '/path/to/your/extension/directory';

Um mehrere Verzeichnisse zum Laden von Erweiterungen anzugeben (z. B. für Paketmanager oder luftgetrennte Umgebungen), verwenden Sie die Option extension_directories:

SET extension_directories = ['/usr/lib/duckdb/extensions', '/opt/duckdb/extensions'];

Beachten Sie, dass das Setzen der Konfigurationsoption home_directory keinen Einfluss auf den Speicherort der Erweiterungen hat.

Erweiterungen deinstallieren

Derzeit bietet DuckDB keinen Befehl zum Deinstallieren von Erweiterungen. Um eine Erweiterung zu deinstallieren, wechseln Sie zum Installationsort der Erweiterung und entfernen Sie die Binärdatei .duckdb_extension: Zum Beispiel:

Terminal window
rm ~/.duckdb/extensions/v1.2.1/osx_arm64/excel.duckdb_extension

Erweiterungen zwischen Clients teilen

Der gemeinsame Installationsort ermöglicht es, Erweiterungen zwischen den Client-APIs derselben DuckDB-Version zu teilen, sofern sie dieselbe platform bzw. ABI verwenden. Wenn eine Erweiterung beispielsweise mit Version 1.2.1 des CLI-Clients unter macOS installiert wird, steht sie den Client-Bibliotheken für Python, R usw. zur Verfügung, sofern diese Zugriff auf das Home-Verzeichnis des Benutzers haben und DuckDB Version 1.2.1 verwenden.

Einschränkungen

Der Erweiterungsmechanismus von DuckDB hat die folgenden Einschränkungen:

  • Erweiterungen können nicht entladen werden.
  • Erweiterungen können nicht neu geladen werden. Wenn Sie Erweiterungen aktualisieren, starten Sie den DuckDB-Prozess neu, um neuere Erweiterungen zu verwenden.