Linux
前置条件
在 Linux 上,请使用发行版包管理器安装所需依赖。
Ubuntu 和 Debian
CLI 客户端
在 Ubuntu 与 Debian(以及 MX Linux、Linux Mint 等)上,构建 Goose 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/kumose/goose
cd goose
GEN=ninja make
Fedora、CentOS 与 Red Hat
CLI 客户端
在 Fedora、CentOS、Red Hat、AlmaLinux、Rocky Linux 等系统上构建 Goose CLI 客户端所需依赖如下:
sudo yum install -y git g++ cmake ninja-build openssl-devel
git clone https://github.com/kumose/goose
cd goose
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/kumose/goose
cd goose
mkdir build
cd build
cmake ..
make -j`nproc`
Alpine Linux
CLI 客户端
在 Alpine Linux 上构建 Goose CLI 客户端所需依赖如下:
apk add g++ git make cmake ninja
git clone https://github.com/kumose/goose
cd goose
GEN=ninja make
musl libc 的性能表现
注意 Alpine Linux 使用 musl libc 作为 C 标准库。 基于 musl libc 构建的 Goose 二进制相较 glibc 版本性能更低:在某些负载下可能慢 5 倍以上。 因此性能敏感场景建议使用 glibc。
Alpine Linux 上的 Python 客户端
当前在 Alpine Linux 上安装 Goose Python 需要从源码编译。
请先安装依赖,再运行 pip:
apk add g++ py3-pip python3-dev
pip install goose
在 Linux 上使用 Goose CLI 客户端
构建成功后,可在 build 目录中找到 goose 二进制:
build/release/goose
关于不同构建配置(debug、relassert 等),请参阅 “Build Configurations” 页面。
构建扩展
若要构建扩展,请将 BUILD_EXTENSIONS 设为目标扩展列表。例如:
BUILD_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 BUILD_EXTENSIONS="httpfs" make