如何设置 Databend 开发环境
工欲善其事,必先利其器。在开启 Databend 贡献之旅前,一起来配置适合自己的开发环境吧。快速安装
快速安装
为方便开发者快速建立开发环境,Databend 维护了一个复杂的 shell 脚本,位于 scripts/setup/dev_setup.sh
。只需执行一条指令即可完成开发环境配置:
$ make setup -d
注意:此过程会辅助安装部分 python 环境,可能会对本地原开发环境造成影响,建议预先执行以下命令以创建并启用专属虚拟环境。
$ python -m venv .databend $ source .databend/bin/activate
如果遇到依赖缺失问题,可以参考「分步安装 - 测试必备」这一部分的内容安装。分步安装
分步安装
这里以 Fedora 36 为例,考虑到不同系统和发行版之间的差异,你可能需要自行安装 gcc,python 和 openssl。
1.安装 Rust toolchain:
推荐使用 rustup 来管理 Rust toolchain ,参考 https://rustup.rs/ 进行安装。对于 MacOS 和 Linux 用户,执行:
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Databend 通常使用最新发布的 nightly 工具链进行开发,相关信息记录在 rust-toolchain.toml
中。Rustup 会在使用时对工具链进行自动重载,安装时只需默认配置。
$ cargo build
info: syncing channel updates for 'nightly-2022-05-19-x86_64-unknown-linux-gnu'
info: latest update on 2022-05-19, rust version 1.63.0-nightly (cd282d7f7 2022-05-18)
2.安装必备依赖:
以下列出了一些安装构建和测试必备依赖的关键步骤,说明及报错信息以注释形式呈现。
构建必备:
# common-hive-meta-store 需要,thrift not found
$ sudo dnf install thrift
# openssl-sys 需要,Can't locate FindBin.pm, File/Compare.pm in @INC
$ sudo dnf install perl-FindBin perl-File-Compare
# prost-build 需要,is `cmake` not installed?
# The CMAKE_CXX_COMPILER: c++ is not a full path and was not found in the PATH.,安装 clang 时也会安装 gcc-c++ 和 llvm
$ sudo dnf install cmake clang
测试必备:
# 功能测试和后续体验需要
$ sudo dnf install mysql
# 包含目前功能测试和 lint 需要的所有 Python 依赖
$ cd tests
$ pip install poetry
$ poetry install
$ poetry shell
# sqllogic 测试需要(包含在上面步骤中,按需选用)
(tests) $ cd logictest
$ pip install -r requirements.txt
# fuzz 测试需要
(tests) $ cd fuzz
$ pip install -r requirements.txt
Lint 必备:
# taplo fmt 需要
$ cargo install taplo-cli
编辑器 - Visual Studio Code
- 访问 https://code.visualstudio.com ,安装 Visual Studio Code 。
1.插件推荐
rust-analyzer
- 作者:The Rust Programming Language
- 为 Visual Studio Code 提供 Rust 语言支持。
crates
- 作者:Seray Uzgur
- 帮助 Rust 开发者管理 Cargo.toml 中的依赖。仅支持来源为 crates.io 的依赖。
CodeLLDB
- 作者:Vadim Chugunov
- 由 LLDB 驱动的原生调试工具。支持调试 C++ 、Rust 和其他编译语言。
Remote - Containers
- 作者:Microsoft
- 在 Docker 容器内打开任何文件夹或 Repo ,并利用 Visual Studio Code 的全部功能。
2. 利用 Dev Containers 开发(For Linux)
安装「Remote - Containers」插件,打开 Databend 后会看到右下角弹出窗口并提示「Reopen in Container」。
安装 Docker
根据 Docker Docs - Install 安装并启动对应你发行版的 docker 。以 Fedora 36
为例,步骤如下:
# 移除旧版本 docker
$ sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 设置存储库
$ sudo dnf -y install dnf-plugins-core
$ sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
# 安装 Docker Engine
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
将当前 User 添加到 docker group 中参考 Docker Docs - PostInstall中 Manage Docker as a non-root user 一节配置,可能需要重启。
步骤如下
# 添加 docker 用户组
$ sudo groupadd docker
# 将用户添加到 docker 这个组中
$ sudo usermod -aG docker $USER
# 激活更改
$ newgrp docker
# 更改权限以修复 permission denied
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
其他步骤
启用 Docker :
$ sudo systemctl start docker
点击左下角「打开远程窗口」选中「Reopen in Container」即可体验。
其他实用工具推荐
这里列出一些可能有助于 Databend 开发的实用工具,根据实际情况按需选用。
1.starship
轻量级、反应迅速、可无限定制的高颜值终端!
- https://github.com/starship/starship
参考 starship - installation 进行安装。
curl -sS https://starship.rs/install.sh | sh
2.hyperfine
命令行基准测试工具。
- https://github.com/sharkdp/hyperfine
参考 hyperfine - installation 进行安装。
cargo install hyperfine
关于 Databend
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
-
Databend 文档:https://databend.rs/
-
Twitter:https://twitter.com/Datafuse_Labs
-
Slack:https://datafusecloud.slack.com/
-
Wechat:Databend
-
GitHub :https://github.com/datafuselabs/databend
文章首发于公众号:Databend
推荐阅读
-
最简单易懂的 C 语言开发环境构建教程,分分钟教你如何在 Windows 中运行第一个 Hello World 程序!
-
如何在 Windows 上使用 WSL 和 VSCode 快速创建 C 语言开发环境
-
飞思卡尔 16 位微控制器(II)--CodeWarrior 开发环境设置和新项目、调试项目
-
S32K]S32K144 入门指南 (1) 从头开始设置开发环境 - 1.起源
-
恩智浦飞思卡尔开发环境设置
-
图形堆栈摘要 (IV) 设置 Mesa 开发环境
-
如何修改 Orientop 的 java 运行环境 Orientop 设置内存
-
[物联网部分 ] 12 - 联发科 MTK8516 开发环境设置 - MT8516 还支持多达 8 个 TDM 通道和 2 个 PDM 输入,以支持远场(Far-field)麦克风语音控制和智能音频设备的多源音频输入。
-
hadoop (a) 入门、Hadoop 架构、集群环境设置 - 第 2 章 Hadoop 运行时环境设置(开发重点)
-
HarmonyOS 实践开发 - 自定义通知角,如何设置应用程序桌面图标角的功能。