跳转至

使用源码安装 NebulaGraph

使用源码安装 NebulaGraph 允许自定义编译和安装设置,并测试最新特性。

前提条件

  • 待安装 NebulaGraph 的主机可以访问互联网。

安装步骤

  1. 克隆 NebulaGraph 的源代码到主机。

    • [推荐] 如果需要安装3.2.1版本的 NebulaGraph,执行如下命令:

      $ git clone --branch release-3.2 https://github.com/vesoft-inc/nebula.git
      
    • 如果需要安装最新的开发版本用于测试,执行如下命令克隆 master 分支的代码:

      $ git clone https://github.com/vesoft-inc/nebula.git
      
  2. 进入目录nebula

    $ cd nebula
    
  3. 创建目录build并进入该目录。

    $ mkdir build && cd build
    
  4. 使用 CMake 生成 makefile 文件。

    Note

    默认安装路径为/usr/local/nebula,如果需要修改路径,请在下方命令内增加参数 -DCMAKE_INSTALL_PREFIX=<installation_path>

    更多 CMake 参数说明,请参见 CMake 参数

    $ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/nebula -DENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release ..
    
  5. 编译 NebulaGraph。

    为了适当地加快编译速度,可以使用选项-j并行编译。并行数量N建议为\(\min(\text{CPU}核数,\frac{内存 (GB)}{2})\)

    $ make -j{N} # E.g., make -j2
    
  6. 安装 NebulaGraph。

    $ sudo make install
    
  7. 安装目录下etc/目录中(默认为/usr/local/nebula/etc)的配置文件为参考模版,用户可以根据需要创建自己的配置文件。如果要使用 script 目录下的脚本,启动、停止、重启、中止和查看服务,配置文件需要命名为 nebula-graph.confnebula-metad.confnebula-storaged.conf

更新 master 版本

master 分支的代码更新速度快,如果安装了 master 分支对应的开发版 NebulaGraph,可根据以下步骤更新版本。

  1. 在目录nebula中,执行命令git pull upstream master更新源码。

  2. 在目录nebula/build中,重新执行make -j{N}make install

下一步

CMake 参数

使用方法

$ cmake -D<variable>=<value> ...

下文的 CMake 参数可以在配置 (CMake) 阶段用来调整编译设置。

CMAKE_INSTALL_PREFIX

CMAKE_INSTALL_PREFIX指定 NebulaGraph 服务模块、脚本和配置文件的安装路径,默认路径为/usr/local/nebula

ENABLE_WERROR

默认值为ON,表示将所有警告(warning)变为错误(error)。如果有必要,用户可以设置为OFF

ENABLE_TESTING

默认值为ON,表示单元测试服务由 NebulaGraph 服务构建。如果只需要服务模块,可以设置为OFF

ENABLE_ASAN

默认值为OFF,表示关闭内存问题检测工具 ASan(AddressSanitizer)。该工具是为 NebulaGraph 开发者准备的,如果需要开启,可以设置为ON

CMAKE_BUILD_TYPE

CMAKE_BUILD_TYPE控制 NebulaGraph 的 build 方法,取值说明如下:

  • Debug

    CMAKE_BUILD_TYPE的默认值,表示 build 过程中只记录 debug 信息,不使用优化选项。

  • Release

    build 过程中使用优化选项,不记录 debug 信息。

  • RelWithDebInfo

    build 过程中既使用优化选项,也记录 debug 信息。

  • MinSizeRel

    build 过程中仅通过优化选项控制代码大小,不记录 debug 信息。

ENABLE_INCLUDE_WHAT_YOU_USE

默认值为OFF。当其值为ON且系统中安装了include-what-you-use,系统将在生成 makefile 过程中报告工程源码中包含的冗余头文件。

NEBULA_USE_LINKER

指定链接程序的方式:

  • 默认值为bfd,表示使用 ld.bfd 链接程序。
  • 如果系统中安装了 lld 链接器, 可设置参数值为lld,表示使用 ld.lld 链接程序。
  • 如果系统中安装了 gold 链接器,可设为gold,表示使用 ld.gold 链接程序。

CMAKE_C_COMPILER/CMAKE_CXX_COMPILER

通常情况下,CMake 会自动查找并使用主机上的 C/C++编译器,但是如果编译器没有安装在标准路径,或者想使用其他编译器,请执行如下命令指定目标编译器的安装路径:

$ cmake -DCMAKE_C_COMPILER=<path_to_gcc/bin/gcc> -DCMAKE_CXX_COMPILER=<path_to_gcc/bin/g++> ..
$ cmake -DCMAKE_C_COMPILER=<path_to_clang/bin/clang> -DCMAKE_CXX_COMPILER=<path_to_clang/bin/clang++> ..

ENABLE_CCACHE

ENABLE_CCACHE默认值为ON,表示使用 Ccache(compiler cache)工具加速编译。

如果想要禁用 ccache,仅仅设置ENABLE_CCACHE=OFF是不行的,因为在某些平台上,ccache 会代理当前编译器,因此还需要设置环境变量export CCACHE_DISABLE=true,或者在文件~/.ccache/ccache.conf中添加disable=true。更多信息请参见 ccache official documentation

NEBULA_THIRDPARTY_ROOT

NEBULA_THIRDPARTY_ROOT指定第三方软件的安装路径,默认路径为/opt/vesoft/third-party

问题排查

如果出现编译失败,请参考以下建议:

  1. 检查操作系统版本是否符合要求、内存和硬盘空间是否足够。

  2. 检查 third-party 是否正确安装。

  3. 使用make -j1降低编译并发度。


最后更新: February 23, 2023