⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
Linux

先决条件

在 Linux 上,使用您的发行版包管理器安装所需的软件包。

Ubuntu 和 Debian

CLI 客户端

在 Ubuntu 和 Debian(以及 MX Linux、Linux Mint 等)上,构建 DuckDB CLI 客户端的要求如下

sudo apt-get update
sudo apt-get install -y git g++ cmake ninja-build libssl-dev
git clone https://github.com/duckdb/duckdb
cd duckdb
GEN=ninja make

Fedora、CentOS 和 Red Hat

CLI 客户端

在 Fedora、CentOS、Red Hat、AlmaLinux、Rocky Linux 等系统上构建 DuckDB CLI 客户端的要求如下

sudo yum install -y git g++ cmake ninja-build openssl-devel
git clone https://github.com/duckdb/duckdb
cd duckdb
GEN=ninja make

Alpine Linux

CLI 客户端

在 Alpine Linux 上构建 DuckDB CLI 客户端的要求如下

apk add g++ git make cmake ninja
git clone https://github.com/duckdb/duckdb
cd duckdb
GEN=ninja make

使用 musl libc 时的性能

请注意,Alpine Linux 使用 musl libc 作为其 C 标准库。与 glibc 版本相比,使用 musl libc 构建的 DuckDB 二进制文件性能较低:对于某些工作负载,速度可能会慢 5 倍以上。因此,建议为性能导向的工作负载使用 glibc。

linux_*_musl 平台的发行版

从 DuckDB v1.2.0 开始,扩展已针对 linux_amd64_musl 平台分发(但尚未针对 linux_amd64_musl 平台分发)。然而,目前没有针对 musl libc 的官方 DuckDB 二进制文件分发,但可以按照本页说明手动构建。

Alpine Linux 上的 Python 客户端

目前,在 Alpine Linux 上安装 DuckDB Python 需要从源代码编译。为此,请在运行 pip 之前安装所需的软件包

apk add g++ py3-pip python3-dev
pip install duckdb

在 Linux 上使用 DuckDB CLI 客户端

构建成功完成后,您可以在 build 目录中找到 duckdb 二进制文件

build/release/duckdb

有关不同的构建配置(debugrelassert 等),请参阅“构建配置”页面

使用扩展标志进行构建

要使用扩展标志进行构建,请将 CORE_EXTENSIONS 标志设置为您要构建的扩展列表。例如

CORE_EXTENSIONS='autocomplete;httpfs;icu;json;tpch' GEN=ninja make

故障排除

Linux AArch64 上的 R 包:too many GOT entries 构建错误

问题:在运行 ARM64 架构 (AArch64) 的 Linux 上构建 R 包可能会导致以下错误消息

/usr/bin/ld: /usr/include/c++/10/bits/basic_string.tcc:206:
warning: too many GOT entries for -fpic, please recompile with -fPIC

解决方案:创建或编辑 ~/.R/Makevars 文件。此示例还包含用于并行构建的 MAKEFLAGS 设置

ALL_CXXFLAGS = $(PKG_CXXFLAGS) -fPIC $(SHLIB_CXXFLAGS) $(CXXFLAGS)
MAKEFLAGS = -j$(nproc)

httpfs 扩展构建失败

问题:在 Linux 上构建 httpfs 扩展时,构建可能会出现以下错误。

CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY
  OPENSSL_INCLUDE_DIR)

解决方案:安装 libssl-dev 库。

sudo apt-get install -y libssl-dev

然后,使用以下命令构建

GEN=ninja CORE_EXTENSIONS="httpfs" make