⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Troubleshooting

R 包:构建仅使用单线程

问题: 默认情况下,R 使用单线程编译包,这会导致构建速度变慢。

解决方案: 要并行化编译,创建或编辑~/.R/Makevars文件,并添加如下一行:

MAKEFLAGS = -j8

上述操作将使用8个线程并行化编译。在Linux/macOS上,您可以添加以下内容以使用机器的所有线程:

MAKEFLAGS = -j$(nproc)

然而,请注意,使用的线程越多,RAM消耗就越高。如果系统在编译时耗尽RAM,那么R会话将会崩溃。

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文件。此示例还包含并行化构建的标志

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

在进行此更改时,还应考虑使构建并行化

Python 包: No module named 'duckdb.duckdb' 构建错误

问题: 构建Python包成功,但无法导入该包:

cd tools/pythonpkg/
python3 -m pip install .
python3 -c "import duckdb"

这将返回以下错误信息:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/duckdb/tools/pythonpkg/duckdb/__init__.py", line 4, in <module>
    import duckdb.functional as functional
  File "/duckdb/tools/pythonpkg/duckdb/functional/__init__.py", line 1, in <module>
    from duckdb.duckdb.functional import (
ModuleNotFoundError: No module named 'duckdb.duckdb'

解决方案: 问题是由于Python尝试从当前工作目录导入引起的。 要解决这个问题,导航到不同的目录(例如,cd ..)并尝试再次运行Python导入。

macOS上的Python包:构建httpfs扩展失败

问题: 在macOS上,当同时包含httpfs扩展和Python包时,构建失败:

GEN=ninja BUILD_PYTHON=1 CORE_EXTENSIONS="httpfs" make
ld: library not found for -lcrypto
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang++' failed with exit code 1
ninja: build stopped: subcommand failed.
make: *** [release] Error 1

解决方案: 通常,我们推荐使用夜间构建版本,可在安装页面的GitHub主分支下获取。 如果您想从源代码构建DuckDB,除非您正在积极开发Python库,否则避免使用BUILD_PYTHON=1标志。 相反,首先构建httpfs扩展(如果需要),然后使用pip单独构建并安装Python包:

GEN=ninja CORE_EXTENSIONS="httpfs" make

如果下一行抱怨缺少pybind11,或者不支持--use-pep517,请确保您使用的是最新版本的pip和setuptools。 您操作系统上的python3-pip可能不是最新的,因此您可能需要先运行python3 -m pip install pip -U

python3 -m pip install tools/pythonpkg --use-pep517 --user

Linux: 构建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