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