TuGraph 4.5.2社区版麒麟 Kylin10 aarch64 的容器化部署全攻略
前言本攻略针对麒麟 Kylin10 aarch64ARM64国产化环境完整梳理 TuGraph 4.5.2 社区版从基础环境搭建→依赖编译安装→tugraph 4.5.2源码编译→docker容器化封装的全流程解决国产化 ARM 架构下编译依赖冲突、架构兼容、权限配置等核心痛点最终输出可直接部署的 Docker 镜像。前置说明环境要求内存 ≥ 16Gssd ≥ 500G麒麟版本4.19.90-24.4.v2101.ky10.aarch64下载docker链接docker-aarch64.tar.gz下载kylin10 aarch64的docker image文件链接kylin10-aarch64-docker-image.tar.gz下载tugraph-4.5.2的源码包和依赖包文件链接tugraph-4.5.2-install.tar.gz一、基础环境准备1.1 安装docker# 注意如果自己本地已安装的docker版本必须高于18.09.0可以跳过1.1 docker安装 su - root groupadd tugraph groupadd docker useradd -d /home/tugraph -r -m -s /bin/bash tugraph usermod -aG docker tugraph mkdir tools cd tools tar -zxvf docker-18.09.0-aarch64.tar.gz chmod x install.docker/docker-compose chmod x install.docker/docker-18.09.0/bin/* # 检查docker-compose是否可以正常执行 install.docker/docker-compose --version # 输出Docker Compose version v5.1.4 # 检查docker、dockerd是否可以正常执行 install.docker/docker --version install.docker/dockerd --version # 输出都是 Docker version 18.09.0, build 4d60db4 # 安装到/usr/bin cp install.docker/docker-compose /usr/bin cp install.docker/docker-18.09.0/bin/* /usr/bin # 在/etc/profile文件末尾加入一行 export PATH/usr/bin:$PATH执行 . /etc/profile1.2 启动docker服务cp install.docker/docker-18.09.0/docker.service /usr/lib/systemd/system/ # 启用docker服务 systemctl daemon-reload systemctl enable docker systemctl start docker # 查看docker服务是否启动 systemctl status docker # Active状态应该是: active (running) since ...1.3 创建专用用户避免 root 权限风险su - root groupadd tugraph groupadd docker useradd -d /home/tugraph -r -m -s /bin/bash tugraph usermod -aG docker tugraph # 切换至该用户后续所有操作建议以该用户执行 su - tugraph1.4 建立local/kylin-v10容器gzip -d kylin10-aarch64-docker-image.tar.gz docker load -i kylin10-aarch64-docker-image.tar # 检查kylin10的映像是否加载成功 docker images # 输出local/keylin-v10 base mkdir -p ~/docker/kylin10 cd ~/docker/kylin10 vi docker-compose.yml # 将下面内容黏贴到docker-compose.yml version: 3.3 services: tugraph: image: local/kylin-v10:base container_name: kylin10 restart: always volumes: - /home/tugraph/docker/kylin10/install.all:/install.all command: [/bin/bash, -c, while true; do sleep 3600; done] # docker-compose.yml结束 cp tugraph-4.5.2-install.tar.gz /home/tugraph/docker/kylin10 tar -zxvf tugraph-4.5.2-install.tar.gz # 解开后出现install.all docker-compose up -d # 检查kylin10容器是否运行 docker ps -a | grep local/kylin-v10:base # STATUS是up状态后进入kylin10 docker exec -it kylin10 bash二、安装依赖包2.1 安装rpms包cd /install.all/rpms yum localinstall *.rpm # 系统提示dbus-daemon-1:1.12.16-19.se.01.p02.ky10.aarch64安装失败可不理睬2.2 核心编译工具安装2.2.1 安装 GCC 8.4.0cd /install.all/packages/gcc-8.4.0 # 清理旧编译文件重新构建 rm -rf build mkdir build cd build # 配置编译参数-fPIC适配ARM静态编译关闭多架构 ../configure --disable-multilib --enable-languagesc,c --enable-checkingrelease --disable-bootstrap CFLAGS-fPIC CXXFLAGS-fPIC export JFLAG-j$(nproc) make ${JFLAG} make install # 替换系统libstdc.so.6解决版本兼容问题 cp ./aarch64-*-linux-gnu/libstdc-v3/src/.libs/libstdc.so.6.0.25 /usr/lib64/ cd /usr/lib64 ln -sf libstdc.so.6.0.25 libstdc.so.6 # 清理临时文件配置gcc软链接 rm -f /usr/local/bin/cc ln -s /usr/local/bin/gcc /usr/local/bin/cc # 配置环境变量生效lib64路径 vim /etc/profile # 文件末尾添加 export LD_LIBRARY_PATH/usr/local/lib64:$LD_LIBRARY_PATH # 生效配置 . /etc/profile # 清理临时文件 cd / rm -rf /install.all/packages/gcc-8.4.0/build2.2.2 安装 openssl-1.0.2ucd /install.all/packages tar -zxvf openssl-1.0.2u.tar.gz cd openssl-1.0.2u ./config no-asm -fPIC shared zlib --prefix/usr --openssldir/usr/ssl export JFLAG-j$(nproc) make ${JFLAG} make install mv libssl.a /usr/lib64/ mv libcrypto.a /usr/lib64/ ldconfig # 清理临时文件 cd / rm -rf /install.all/packages/openssl-1.0.2u2.2.3 安装 Python 3.6.9TuGraph 脚本依赖cd /install.all/packages tar -zxvf Python-3.6.9.tgz cd Python-3.6.9 # 配置安装路径启用优化 vim Modules/Setup.dist # 找到被注释掉的 SSL 配置部分。将其取消注释如下 # Socket module helper for SSL support; you must comment out the other # socket line above, and possibly edit the SSL variable: SSL/usr _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib64 -lssl -lcrypto # end Setup.dist ./configure --prefix/usr/local --enable-optimizations export JFLAG-j$(nproc) make LDFLAGS-L/usr/lib64 -lz -j$(nproc) make install # 配置Python环境变量 vim /etc/profile # 文件尾部添加 export PATH/usr/local/bin:$PATH # 生效配置 . /etc/profile # 验证版本 python3 --version # 应输出Python 3.6.9 # 升级pip安装离线whl包 # 不要理睬 Could not fetch URL https://pypi.org/simple/pip/ 的提示 python3 -m pip install --upgrade ../pip-21.3.1-py3-none-any.whl pip install /install.all/whls/*.whl cd / rm -rf /install.all/packages/Python-3.6.92.2.4 安装 CMake 3.25.2cd /install.all/packages tar zxvf cmake-3.25.2.tar.gz cd cmake-3.25.2 # 初始化编译配置 export LDFLAGS-lz -ldl ./bootstrap export JFLAG-j$(nproc) make ${JFLAG} make install # 配置环境变量 vim /etc/profile # 文件尾部添加 export PATH/usr/local/bin:$PATH . /etc/profile # 验证版本 cmake --version # 输出cmake version 3.25.2 # 清理临时文件 cd / rm -rf /install.all/packages/cmake-3.25.22.2.5 安装 Boost 1.68.0cd /install.all/packages tar zxvf boost_1_68_0.tar.gz # 清理旧版本 rm -rf /usr/local/lib/libboost* rm -rf /usr/local/include/boost cd boost_1_68_0 # 初始化编译指定需要的模块 ./bootstrap.sh --with-librariessystem,random,thread,filesystem,chrono,atomic,date_time,regex,stacktrace,log # 编译安装静态库ARM适配-fPIC ./b2 -a ${JFLAG} cxxflags-stdc17 cflags-fPIC linkstatic runtime-linkstatic --ignore-site-config install # 修复boost geometry编译报错 sed -i 513s/BOOST_MPL_ASSERT_MSG((I 1), INVALID_INDEX,/BOOST_MPL_ASSERT_MSG((I 1), INVALID_INDEX_,/ /usr/local/include/boost/geometry/index/detail/predicates.hpp # 安装geometry扩展 cd /install.all/packages tar zxvf geometry-extensions.tar.gz mv extensions /usr/local/include/boost/geometry/ # 清理临时文件 cd / rm -rf /install.all/packages/boost_1_68_02.2.6 安装 Protobuf 3.6.0cd /install.all/packages # 卸载系统自带版本避免冲突 yum remove protobuf protobuf-devel protobuf-lite -y tar -zxvf protobuf-3.6.0.tar.gz cd protobuf-3.6.0 rm -f /install.all/packages/protobuf-3.6.0/third_party cp -r /install.all/packages/ # 生成配置文件编译静态库 ./autogen.sh ./configure CFLAGS-fPIC CXXFLAGS-fPIC --prefix/usr/local export JFLAG-j$(nproc) make ${JFLAG} make install ldconfig # 清理临时文件 cd / rm -rf /install.all/packages/protobuf-3.6.02.2.7 安装 Snappy 1.1.9cd /install.all/packages unzip snappy-1.1.9.zip cd snappy-1.1.9/third_party/ rm -rf * # 复制离线依赖 cp -r /install.all/packages/snappy.googletest googletest cp -r /install.all/packages/snappy.benchmark benchmark # 编译安装 cd .. mkdir build cd build cmake -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC -Wno-errorunused-parameter .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/snappy-1.1.92.2.8 安装 Gflags 2.2.1cd /install.all/packages tar -zxvf gflags-2.2.1.tar.gz cd gflags-2.2.1 mkdir build cd build cmake -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC -Wno-errorunused-parameter .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/gflags-2.2.12.2.9 安装 LevelDB 1.20cd /install.all/packages unzip leveldb-v1.20.zip cd leveldb-1.20 # 编译指定C17和-fPIC CFLAGS-fPIC -stdc17 CXXFLAGS-fPIC -stdc17 make ${JFLAG} # 替换系统库 rm -rf /usr/local/include/leveldb rm -f /usr/local/lib/libleveldb.so.1 /usr/local/lib/libleveldb.so cp -r ./include/leveldb/ /usr/local/include/ cp ./out-shared/libleveldb.so.1.20 /usr/local/lib/ cp ./out-static/libleveldb.a /usr/local/lib/ ln -s /usr/local/lib/libleveldb.so.1.20 /usr/local/lib/libleveldb.so.1 ln -s /usr/local/lib/libleveldb.so.1.20 /usr/local/lib/libleveldb.so # 清理临时文件 cd / rm -rf /install.all/packages/leveldb-1.202.2.10 安装 Node.js 16.20.0cd /install.all/packages/node-v16.20.0-linux-arm64/ # 替换系统软链接 rm -f /usr/local/bin/npm /usr/local/bin/node /usr/local/bin/npx /usr/local/bin/yarn ln -s $(pwd)/bin/npm /usr/local/bin/npm ln -s $(pwd)/bin/node /usr/local/bin/node ln -s $(pwd)/bin/npx /usr/local/bin/npx ln -s $(pwd)/bin/yarn /usr/local/bin/yarn2.2.11 配置CMAKE_OPT全局编译参数vim /etc/profile # 文件尾添加 export CMAKE_OPT-DCMAKE_BUILD_TYPERelease -DBUILD_SHARED_LIBS0 -DBUILD_TESTS0 -DBUILD_SAMPLES0 -DCMAKE_C_COMPILERgcc -DCMAKE_CXX_COMPILERg . /etc/profile2.2.12 安装 brpc 1.2cd /install.all/packages unzip brpc-release-1.2.zip cd brpc-release-1.2 mkdir build cd build rm -rf /usr/local/lib64/libbrpc.* /usr/local/include/brpc cmake $CMAKE_OPT -DBUILD_UNIT_TESTS0 -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/brpc-release-1.22.2.13 安装cpprestsdk 2.10.18cd /install.all/packages unzip cpprestsdk-v2.10.18.zip cd cpprestsdk-2.10.18/Release/libs/ rm -rf * cp -r /install.all/packages/cpprestsdk.websocketpp websocketpp cd .. # 修改为静态编译 sed -i / set(BUILD_SHARED_LIBS ON CACHE BOOL Build shared libraries)/c set(BUILD_SHARED_LIBS OFF CACHE BOOL Build shared libraries) CMakeLists.txt mkdir build cd build rm -rf /usr/local/include/cpprest /usr/local/lib64/libcpprest.* cmake $CMAKE_OPT -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC -Wno-errorunused-parameter -DBoost_USE_STATIC_LIBS1 .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/cpprestsdk-2.10.182.2.14 安装 googletest 1.12.1cd /install.all/packages unzip googletest-release-1.12.1.zip cd googletest-release-1.12.1 mkdir build cd build cmake $CMAKE_OPT -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC -DBUILD_SHARED_LIBSOFF .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/googletest-release-1.12.12.2.15 安装 jwt-cpp 0.6.0cd /install.all/packages unzip jwt-v0.6.0.zip cd jwt-cpp-0.6.0 rm -rf /usr/local/include/jwt-cpp /usr/local/include/picojson cp -r include/jwt-cpp/ /usr/local/include cp -r include/picojson/ /usr/local/include # 清理临时文件 cd / rm -rf /install.all/packages/jwt-cpp-0.6.02.2.16 安装 jemalloc 5.3.0cd /install.all/packages tar zxvf jemalloc-5.3.0.tar.gz cd jemalloc-5.3.0 CFLAGS-fPIC CXXFLAGS-fPIC ./autogen.sh export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/jemalloc-5.3.02.2.17 安装 RocksDB 7.8.3cd /install.all/packages tar zxvf rocksdb-v7.8.3.tar.gz cd rocksdb-7.8.3 rm -rf /usr/local/include/rocksdb /usr/local/lib/librocksdb* cmake -DCMAKE_BUILD_TYPERelease -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DPORTABLEON -DFORCE_SSE42OFF -DWITH_JEMALLOCON export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/rocksdb-7.8.32.2.18 安装 antlr4 4.13.0cd /install.all/packages tar -zxvf antlr4-4.13.0.tar.gz cd antlr4-4.13.0/runtime/Cpp vim CMakeLists.txt # 在CmakeLists.txt第9行后插入 # 10 set(CMAKE_CXX_STANDARD 17) # 11 set(CMAKE_CXX_STANDARD_REQUIRED ON) rm -rf build rm -rf /usr/local/lib64/libantlr4-* rm -rf /usr/local/lib/libantlr4-* rm -rf /usr/local/include/antlr4-runtime rm -rf /usr/local/lib64/cmake/antlr4-* mkdir -p build cd build cmake -DWITH_DEMO0 -DANTLR_BUILD_CPP_TESTS0 -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC -DANTLR4_INSTALL1 -DCMAKE_INSTALL_PREFIX/usr/local .. export JFLAG-j$(nproc) make ${JFLAG} make install rm -rf /opt/apache-maven-3.8.7 cp -r /install.all/packages/apache-maven-3.8.7 /opt/apache-maven-3.8.7 vim /etc/profile # 在profile尾部添加下面两行 # export JAVA_HOME/usr/lib/jvm/java-11-openjdk-11.0.30.7-4.p01.ky10.aarch64 # export PATH/opt/apache-maven-3.8.7/bin:$JAVA_HOME/bin:$PATH . /etc/profile rm -rf ~/.m2 mkdir ~/.m2 cp -r /install.all/maven.m2/* ~/.m2/ cd /install.all/packages/antlr4-4.13.0 mvn package -DskipTests -o cp tool/target/antlr4-4.13.0-complete.jar /usr/local/bin chmod 755 /usr/local/bin/antlr4-4.13.0-complete.jar # 清理临时文件 cd / rm -rf /install.all/packages/antlr4-4.13.02.2.19 安装 glog-0.3.5cd /install.all/packages tar zxvf glog-0.3.5.tar.gz cd glog-0.3.5 mkdir -p build cd build cmake -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_INSTALL_PREFIX/usr/local .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/glog-0.3.52.2.20 安装 apache-arrow-13.0.0.cd /install.all/packages tar -zxvf apache-arrow-13.0.0.tar.gz cd apache-arrow-13.0.0/cpp mkdir build cd build export ARROW_DEPENDENCY_SOURCEDOWNLOAD export ARROW_ABSL_URLfile:///install.all/packages/apache-arrow.pacakges/absl-20211102.0.tar.gz export ARROW_AWSSDK_URLfile:///install.all/packages/apache-arrow.pacakges/aws-sdk-cpp-1.8.133.tar.gz export ARROW_AWS_CHECKSUMS_URLfile:///install.all/packages/apache-arrow.pacakges/aws-checksums-v0.1.12.tar.gz export ARROW_AWS_C_COMMON_URLfile:///install.all/packages/apache-arrow.pacakges/aws-c-common-v0.6.9.tar.gz export ARROW_AWS_C_EVENT_STREAM_URLfile:///install.all/packages/apache-arrow.pacakges/aws-c-event-stream-v0.1.5.tar.gz export ARROW_BOOST_URLfile:///install.all/packages/apache-arrow.pacakges/boost-1.75.0.tar.gz export ARROW_BROTLI_URLfile:///install.all/packages/apache-arrow.pacakges/brotli-v1.0.9.tar.gz export ARROW_BZIP2_URLfile:///install.all/packages/apache-arrow.pacakges/bzip2-1.0.8.tar.gz export ARROW_CARES_URLfile:///install.all/packages/apache-arrow.pacakges/cares-1.17.2.tar.gz export ARROW_CRC32C_URLfile:///install.all/packages/apache-arrow.pacakges/crc32c-1.1.2.tar.gz export ARROW_GBENCHMARK_URLfile:///install.all/packages/apache-arrow.pacakges/gbenchmark-v1.6.0.tar.gz export ARROW_GFLAGS_URLfile:///install.all/packages/apache-arrow.pacakges/gflags-v2.2.2.tar.gz export ARROW_GLOG_URLfile:///install.all/packages/apache-arrow.pacakges/glog-v0.5.0.tar.gz export ARROW_GOOGLE_CLOUD_CPP_URLfile:///install.all/packages/apache-arrow.pacakges/google-cloud-cpp-v1.42.0.tar.gz export ARROW_GRPC_URLfile:///install.all/packages/apache-arrow.pacakges/grpc-v1.46.3.tar.gz export ARROW_GTEST_URLfile:///install.all/packages/apache-arrow.pacakges/gtest-1.11.0.tar.gz export ARROW_JEMALLOC_URLfile:///install.all/packages/apache-arrow.pacakges/jemalloc-5.3.0.tar.bz2 export ARROW_LZ4_URLfile:///install.all/packages/apache-arrow.pacakges/lz4-v1.9.4.tar.gz export ARROW_MIMALLOC_URLfile:///install.all/packages/apache-arrow.pacakges/mimalloc-v2.0.6.tar.gz export ARROW_NLOHMANN_JSON_URLfile:///install.all/packages/apache-arrow.pacakges/nlohmann-json-v3.10.5.tar.gz export ARROW_OPENTELEMETRY_URLfile:///install.all/packages/apache-arrow.pacakges/opentelemetry-cpp-v1.4.1.tar.gz export ARROW_OPENTELEMETRY_PROTO_URLfile:///install.all/packages/apache-arrow.pacakges/opentelemetry-proto-v0.17.0.tar.gz export ARROW_ORC_URLfile:///install.all/packages/apache-arrow.pacakges/orc-1.9.0.tar.gz export ARROW_PROTOBUF_URLfile:///install.all/packages/apache-arrow.pacakges/protobuf-v21.3.tar.gz export ARROW_RAPIDJSON_URLfile:///install.all/packages/apache-arrow.pacakges/rapidjson-232389d4f1012dddec4ef84861face2d2ba85709.tar.gz export ARROW_RE2_URLfile:///install.all/packages/apache-arrow.pacakges/re2-2022-06-01.tar.gz export ARROW_SNAPPY_URLfile:///install.all/packages/apache-arrow.pacakges/snappy-1.1.9.tar.gz export ARROW_THRIFT_URLfile:///install.all/packages/apache-arrow.pacakges/thrift-0.16.0.tar.gz export ARROW_UCX_URLfile:///install.all/packages/apache-arrow.pacakges/ucx-1.12.1.tar.gz export ARROW_UTF8PROC_URLfile:///install.all/packages/apache-arrow.pacakges/utf8proc-v2.7.0.tar.gz export ARROW_XSIMD_URLfile:///install.all/packages/apache-arrow.pacakges/xsimd-9.0.1.tar.gz export ARROW_ZLIB_URLfile:///install.all/packages/apache-arrow.pacakges/zlib-1.2.13.tar.gz export ARROW_ZSTD_URLfile:///install.all/packages/apache-arrow.pacakges/zstd-1.5.5.tar.gz cmake .. -DARROW_DATASETON -DARROW_PARQUETON -DARROW_ORCON -DARROW_CSVON -DCMAKE_CXX_STANDARD17 -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/apache-arrow-13.0.02.2.21 安装 GraphAr-0.11.1cd /install.all/packages tar -zxvf GraphAr-0.11.1.tar.gz cd GraphAr-0.11.1/cpp mkdir build cd build cmake .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/GraphAr-0.11.12.2.22 安装 tabulatecd /install.all/packages tar -zxvf tabulate-3a5830.tar.gz mv tabulate/include/tabulate /usr/local/include # 清理临时文件 cd / rm -rf /install.all/packages/tabulate2.2.23 安装 swig-4.0.2cd /install.all/packages tar -zxvf swig-4.0.2.tar.gz cd swig-4.0.2 ./configure export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/swig-4.0.22.2.24 安装 FAISScd /install.all/packages tar -zxvf openblas-faiss.tar.gz cd openblas-faiss/OpenBLAS make make PREFIX/opt/OpenBLAS install cd ../faiss mkdir build cd build cmake -B build \ -DCMAKE_BUILD_TYPERelease \ -DFAISS_ENABLE_PYTHONOFF \ -DFAISS_ENABLE_GPUOFF \ -DFAISS_OPT_LEVELgeneric \ -DBUILD_TESTINGOFF \ -DBUILD_SHARED_LIBSOFF \ -DCMAKE_INSTALL_PREFIX/usr/local \ -DCMAKE_INSTALL_LIBDIRlib \ -DOpenMP_CXX_FLAGS-fopenmp \ -DOpenMP_CXX_LIB_NAMESgomp \ -DOpenMP_gomp_LIBRARY/usr/lib64/libgomp.so.1 \ -DBLA_VENDOROpenBLAS \ -DBLAS_LIBRARIES/opt/OpenBLAS/lib/libopenblas.so \ -DLAPACK_LIBRARIES/opt/OpenBLAS/lib/libopenblas.so .. export JFLAG-j$(nproc) make -C build ${JFLAG} make -C build install ldconfig # 清理临时文件 cd / rm -rf /install.all/packages/openblas-faiss2.2.25 安装 vsag-0.11.5cd /install.all/packages tar -zxvf vsag-0.11.5.tar.gz cd vsag-0.11.5 mkdir build cd build rm /usr/local/lib/libgfortran.so ln -s /usr/lib64/libgfortran.so.5.0.0 /usr/local/lib/libgfortran.so ldconfig sed -i /FetchContent_Declare/,/TIMEOUT 30/c\FetchContent_Declare(\n roaringbitmap\n URL file:\/\/\/install.all\/packages\/vsag.packages\/roaringbitmap-3.0.1.tar.gz\n ../extern/roaringbitmap/roaringbitmap.cmake sed -i /URL https:\/\/archives.boost.io/,/URL_HASH SHA256/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/boost_1_67_0.tar.gz ../extern/boost/boost.cmake sed -i /URL https:\/\/github.com/,/URL_HASH MD5/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/catch2-3.4.0.tar.gz ../extern/catch2/catch2.cmake sed -i /URL https:\/\/github.com/,/URL_HASH MD5/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/fmt-10.2.1.tar.gz ../extern/fmt/fmt.cmake sed -i /URL https:\/\/github.com/,/URL_HASH MD5/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/hdf5-1.14.4.tar.gz ../extern/hdf5/hdf5.cmake sed -i /URL https:\/\/github.com/,/URL_HASH MD5/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/json-3.11.3.tar.gz ../extern/json/json.cmake sed -i /URL https:\/\/github.com/,/URL_HASH MD5/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/OpenBLAS-0.3.23.tar.gz ../extern/openblas/openblas.cmake sed -i /URL https:\/\/github.com/,/URL_HASH MD5/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/pybind11-2.11.1.tar.gz ../extern/pybind11/pybind11.cmake sed -i /URL https:\/\/github.com/,/URL_HASH MD5/c\ URL file:\/\/\/install.all\/packages\/vsag.packages\/thread_pool.tar.gz ../extern/thread_pool/thread_pool.cmake cmake -DCMAKE_BUILD_TYPERelease -DENABLE_INTEL_MKLOFF -DDISABLE_AVX2_FORCEON -DDISABLE_AVX512_FORCEON .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/vsag-0.11.52.2.26 安装 prometheus-cpp-client 1.0.1cd /install.all/packages unzip prometheus-cpp-client-v1.0.1.zip cd prometheus-cpp-1.0.1/3rdparty/ rm -rf * cp -r /install.all/packages/prometheus-cpp-client-3rdparty/* . cd .. mkdir build cd build cmake $CMAKE_OPT .. export JFLAG-j$(nproc) make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/prometheus-cpp-1.0.12.2.27 安装 pybind11 2.10.0cd /install.all/packages unzip pybind11-v2.10.0.zip cd pybind11-2.10.0 cp -r include/pybind11 /usr/local/include # 清理临时文件 cd / rm -rf /install.all/packages/pybind11-2.10.02.2.28 安装 braft 1.1.2cd /install.all/packages unzip braft-v1.1.2.zip cd braft-1.1.2/ sed -i /.*set(CMAKE_CPP_FLAGS ${CMAKE_CPP_FLAGS} -msse4 -msse4.2)*/c\ CMakeLists.txt mkdir build cd build cmake $CMAKE_OPT .. make ${JFLAG} make install # 清理临时文件 cd / rm -rf /install.all/packages/braft-1.1.2 ## 三、编译 TuGraph 4.5.2 源码 ### 3.1 环境变量 bash vim /etc/profile # 文件尾部添加以下内容 export JAVA_HOME/usr/lib/jvm/java-11-openjdk-11.0.30.7-4.p01.ky10.aarch64 export LD_LIBRARY_PATH/usr/local/lib64/lgraph:/usr/local/lib64:/usr/local/lib:/usr/lib/jvm/java-11-openjdk-11.0.30.7-4.p01.ky10.aarch64/lib/server:$LD_LIBRARY_PATH export PYTHONPATH/usr/local/lib64/lgraph:/usr/local/lib64:$PYTHONPATH export PATH/opt/apache-maven-3.8.7/bin:$JAVA_HOME/bin:$PATH export LANGzh_CN.utf8 export LC_ALLzh_CN.utf8 # 生效配置 . /etc/profile # 配置字符集 localedef -c -f UTF-8 -i zh_CN zh_CN.utf83.2 编译源码cd /install.all/TuGraph-DB/deps # 配置npm镜像加速前端依赖下载 npm config set registry https://registry.npmmirror.com # 编译依赖 ./build_deps.sh # 编译TuGraph主程序 cd .. rm -rf build mkdir build cd build # 配置编译参数适配麒麟aarch64指定Boost静态库 export CMAKE_OPT-DCMAKE_BUILD_TYPERelease -DCMAKE_POSITION_INDEPENDENT_CODEON -DCMAKE_CXX_FLAGS-fPIC -DCMAKE_C_FLAGS-fPIC -DBOOST_ROOT/usr/local -DBOOST_INCLUDEDIR/usr/local/include -DBoost_NO_SYSTEM_PATHSON -DBUILD_SHARED_LIBSOFF export CXXFLAGS-stdc17 -fPIC # 核心编译命令关键-DENABLE_BUILD_ON_AARCH64ON 适配ARM64 git config --global --add safe.directory /install.all/TuGraph-DB vim ../toolkits/CMakeLists.txt # 在54行后面插入 target_link_libraries(lgraph_monitor PRIVATE ssl crypto), 如下 51 target_link_libraries(${TARGET_LGRAPH_MONITOR} 52 lgraph_client_cpp_rpc 53 libprometheus-cpp-pull.a 54 libprometheus-cpp-core.a) 55 56 target_link_libraries(${TARGET_LGRAPH_MONITOR} ssl crypto) cmake .. -DCMAKE_BUILD_TYPERelease -DCMAKE_CXX_STANDARD17 -DCMAKE_POSITION_INDEPENDENT_CODEON -DCMAKE_C_COMPILER/usr/local/bin/gcc -DCMAKE_CXX_COMPILER/usr/local/bin/g -DBOOST_ROOT/usr/local -DBOOST_INCLUDEDIR/usr/local/include -DBoost_LIBRARY_DIR_RELEASE/usr/local/lib -DBoost_NO_SYSTEM_PATHSON -DBoost_NO_BOOST_CMAKEON -DBoost_USE_STATIC_LIBSON -DBUILD_SHARED_LIBSON -DOURSYSTEMcentos7 -DCMAKE_EXE_LINKER_FLAGS-lgfortran -DENABLE_BUILD_ON_AARCH64ON -DOPENSSL_ROOT_DIR/usr -DOPENSSL_LIBRARIES/usr/lib64 # 编译打包生成rpm/deb安装包 make ${JFLAG} make package ls -l tugraph-4.5.2-1.el7.aarch64.rpm # 编译好的安装包3.3 建立打包目录cd /install.all/TuGraph-DB/build mkdir tugraph cp -r output/* tugraph rm tugraph/resource cp -r /install.all/TuGraph-DB/src/restful/server/browser-resource tugraph/resource cd tugraph mkdir data mkdir logs vim lgraph.json # 填入下面内容 { directory : /install.all/TuGraph-DB/build/tugraph/data, host : 0.0.0.0, port : 7070, rpc_port : 9090, enable_rpc : true, enable_plugin: true, bolt_port: 7687, bolt_io_thread_num: 100, enable_ha : false, verbose : 1, log_dir : /install.all/TuGraph-DB/build/tugraph/logs/lgraph_log, log_level: INFO, disable_auth : false, ssl_auth : false, server_root: /install.all/TuGraph-DB/build/tugraph/, server_key : , server_cert : , web : /install.all/TuGraph-DB/build/tugraph/resource } # lgraph.json结束 ./lgraph_server --log_dir /install.all/TuGraph-DB/build/tugraph/logs --config /install.all/TuGraph-DB/build/tugraph/lgraph.json 看到logs/下的日志输出下面信息恭喜安装已成功: ********************************************************************** * TuGraph Graph Database v4.5.2 * * * * Copyright(C) 2018-2023 Ant Group. All rights reserved. * * * ********************************************************************** Server is configured with the following parameters: Backup log enable: 0 DB directory: /install.all/TuGraph-DB/build/tugraph/data HA enable: 0 HTTP port: 7070 HTTP web dir: /install.all/TuGraph-DB/build/tugraph/resource RPC enable: 1 RPC port: 9090 SSL enable: 0 Whether the token is unlimited: 0 audit log enable: 0 bind host: 0.0.0.0 bolt port: 7687 bolt raft node id: 0 bolt raft port: 0 disable auth: 0 durable: 0 log dir: /install.all/TuGraph-DB/build/tugraph/logs log verbose: 1 number of bolt io threads: 100 optimistic transaction: 0 reset admin password if you forget: 0 subprocess idle limit: 600 thread limit: 0 [20260601 06:35:52.464215 0x0000fffc53a87d30 INFO src/server/lgraph_server.cpp:195] Core dump file limit size, soft limit: 18446744073709551615, hard limit: 18446744073709551615 [20260601 06:35:52.464247 0x0000fffc53a87d30 INFO src/server/lgraph_server.cpp:201] Core dump file path: |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h [20260601 06:35:52.484412 0x0000fffc53a87d30 INFO src/server/lgraph_server.h:77] [StateMachine] Builtin services are disabled according to ServerOptions.has_builtin_services [20260601 06:35:52.484849 0x0000fffc53a87d30 INFO src/server/lgraph_server.cpp:310] Listening for RPC on port 9090 [20260601 06:35:52.506907 0x0000fffc53a87d30 INFO src/restful/server/rest_server.cpp:479] Listening for REST on port 7070 [20260601 06:35:52.508500 0x0000fbf85efdb360 INFO src/server/bolt_server.cpp:37] bolt server run [20260601 06:35:52.508575 0x0000fffc53a87d30 INFO src/server/lgraph_server.cpp:379] Server started.四、常见问题排查编译时提示 libgfortran 缺失执行yum install -y libgfortran-develARM 架构编译报错 “illegal instruction”编译时添加-DFORCE_SSE42OFF参数禁用 x86 指令集容器启动后无法访问检查容器端口映射-p 参数、服务器防火墙 / 安全组是否放行 7070/9090 端口libstdc.so.6 版本过低替换为 GCC 8.4.0 编译生成的 libstdc.so.6.0.25见 2.1 步骤。g: 致命错误已杀死 signal terminated program cc1plus 编译中断。: 内存不足用make -j1改为一个线程后再次尝试总结麒麟 Kylin10 aarch64 部署 TuGraph 4.5.2 的核心是适配 ARM 架构编译参数-fPIC 静态库编译 禁用 x86 指令集依赖安装需严格按顺序执行重点解决 Boost/Protobuf/RocksDB 的 ARM 兼容问题容器化封装后可直接分发部署需挂载数据卷保证数据持久化暴露 7070/9090 端口提供服务。安装包文件联系gzsubrain139.com