Linux에서 빌드하기

Linux에서 빌드하기 (Building on Linux)

이 페이지에서는 Linux에서 DuckDB를 빌드하는 방법을 설명해요.

출처: 문서

본문

사전 요구사항 (Prerequisites)

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 libcurl4-openssl-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

더 오래된 Red Hat 계열 배포판에서는 g++의 패키지 이름을 gcc-c++로 바꾸고, Ninja를 건너뛰고 Make 잡 수를 수동으로 구성해야 할 수도 있어요.

sudo yum install -y git gcc-c++ cmake openssl-devel
git clone https://github.com/duckdb/duckdb
cd duckdb
mkdir build
cd build
cmake ..
make -j`nproc`

Arch Linux

다음 지침은 Arch Linux와 Arch 계열 배포판(예: Manjaro, Omarchy)을 위한 것이에요.

CLI 클라이언트

DuckDB는 Arch의 Extra 패키지 저장소에서 사용할 수 있어요. 설치하려면:

sudo pacman -S duckdb

Arch, Manjaro 등에서 DuckDB CLI 클라이언트를 빌드하는 데 필요한 것은 다음과 같아요.

sudo pacman -S git gcc cmake ninja openssl
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로 성능 (Performance with musl libc)

Alpine Linux는 C 표준 라이브러리로 musl libc를 사용해요. musl libc로 빌드된 DuckDB 바이너리는 glibc 변형보다 성능이 낮아요. 일부 워크로드에서는 지연이 5배 이상이 될 수 있어요. 따라서 성능 중심 워크로드에는 glibc를 사용하는 것이 권장돼요.

linux_*_musl 플랫폼 배포 (Distribution for the linux_*_musl Platforms)

DuckDB v1.2.0부터 _DuckDB 확장은 linux_amd64_musl 플랫폼용으로 배포돼요(linux_arm64_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 클라이언트 사용하기 (Using the DuckDB CLI Client on Linux)

빌드가 성공적으로 끝나면 build 디렉터리에서 duckdb 바이너리를 찾을 수 있어요.

build/release/duckdb

다른 빌드 구성(debug, relassert 등)에 대해서는 "Build Configurations" 페이지를 참고해요.

확장 빌드 (Building Extensions)

확장을 빌드하려면 BUILD_EXTENSIONS 플래그를 빌드할 확장 목록으로 설정해요. 예를 들어:

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

문제 해결 (Troubleshooting)

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 BUILD_EXTENSIONS="httpfs" make

더 알아보기 (Learn more)