成功安装Milvus!零基础Ubuntu部署安装Milvus教程

发布时间:2024年01月02日

网上可参考的Milvus源码安装教程资料太少,且不全,会缺少很多依赖安装,导致最后编译安装会遇到很多问题,在此,整理自己源码编译安装的全过程,方便日后查看。

Milvus源码编译安装

Golang和C++开发环境安装

根据此教程进行部署安装Golang开发环境。
由于Milvus是GO语言开发,所以需要先安装Golang,版本要求>=1.16即可。

源码安装编译基础依赖:OpenBLAS

OpenBLAS是向量计算库,参考此教程部署安装。

1.先安装必要依赖工具:

sudo apt-get update && \
# common utils for download sources tarball/zipball
sudo apt-get install -y --no-install-recommends curl wget ca-certificates gnupg2 && \
# openblas deps
sudo apt-get install -y --no-install-recommends g++ gcc gfortran git make && \
# cleanup
sudo apt-get remove --purge -y
  1. 下载0.3.9版本的OpenBLAS源码包
    这里我是手动下载上传。
OPENBLAS_VERSION=0.3.9 && \
wget "https://github.com/xianyi/OpenBLAS/archive/v${OPENBLAS_VERSION}.tar.gz"
  1. 解压编译
tar -zxvf xxx.tar.gz 
cd xxx
sudo make TARGET=CORE2 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1 USE_THREAD=0 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="-O3 -g -fPIC" FCOMMON_OPT="-O3 -g -fPIC -frecursive" NMAX="NUM_THREADS=128" LIBPREFIX="libopenblas" LAPACKE="NO_LAPACKE=1" INTERFACE64=0 NO_STATIC=1
  1. 等待结果,出现下面内容表示OpenBLAS编译完成
make[1]: Leaving directory '/app/OpenBLAS-0.3.9/exports'

 OpenBLAS build complete. (BLAS CBLAS LAPACK LAPACKE)

  OS               ... Linux             
  Architecture     ... x86_64               
  BINARY           ... 64bit                 
  C compiler       ... GCC  (command line : gcc)
  Fortran compiler ... GFORTRAN  (command line : gfortran)
  Library Name     ... libopenblas-r0.3.9.a (Single threaded)  

To install the library, you can run "make PREFIX=/path/to/your/installation install".
  1. 安装OpenBLAS
sudo make -j4 PREFIX=/usr NO_STATIC=1 install 
  1. 出现下面内容,表示安装成功!
make[1]: Entering directory '/app/milvus/OpenBLAS-0.3.9'
Generating openblas_config.h in /usr/include
Generating f77blas.h in /usr/include
Generating cblas.h in /usr/include
Copying LAPACKE header files to /usr/include
Copying the shared library to /usr/lib
Generating openblas.pc in /usr/lib/pkgconfig
Generating OpenBLASConfig.cmake in /usr/lib/cmake/openblas
Generating OpenBLASConfigVersion.cmake in /usr/lib/cmake/openblas
Install OK!
make[1]: Leaving directory '/app/milvus/OpenBLAS-0.3.9'
  1. 清理
rm -rf xxx.tar.gz

安装Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup install 1.73.0

查看cargo和rustup版本是否均为1.73.0

cargo --version
rustc --version

设置为默认版本并确认cargo和rust版本

rustup default 1.73.0

输入以下命令确保已设为默认版本:

rustup toolchain list

在这里插入图片描述

安装前置依赖

参考此教程

  1. 安装googletest
wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz && \
tar zxf release-1.8.0.tar.gz && \
rm -f release-1.8.0.tar.gz && \
cd googletest-release-1.8.0 && \
cmake . && \
make && \
make install
  1. 安装packages
sudo apt-get install \
    g++ \
    cmake \
    libboost-all-dev \
    libevent-dev \
    libdouble-conversion-dev \
    libgoogle-glog-dev \
    libgflags-dev \
    libiberty-dev \
    liblz4-dev \
    liblzma-dev \
    libsnappy-dev \
    make \
    zlib1g-dev \
    binutils-dev \
    libjemalloc-dev \
    libssl-dev \
    pkg-config \
    libunwind-dev
  1. 安装fmt
git clone https://github.com/fmtlib/fmt.git && cd fmt

mkdir _build && cd _build
cmake ..

make -j$(nproc)
sudo make install
  1. 安装调试相关依赖
apt-get install \
    libunwind8-dev \
    libelf-dev \
    libdwarf-dev
  1. 下载安装folly
    如果克隆失败,建议手动下载放到合适位置即可。
git clone https://github.com/facebook/folly.git

编译安装folly

cd folly
mkdir _build && cd _build
cmake ..
make -j $(nproc)
make install 

下载源码

到这一步,基本的前置工作已完成。

git clone https://gitee.com/milvus-io/milvus.git

更改安装脚本

cd milvus/scripts
vim 3rdparty_build.sh

搜索/cargo,找到+1.73 build替换为:

rustup run 1.73.0 cargo build --release --verbose

如果不替换使用下载的源码部署脚本编译,会报错"error:toolchain ‘1.73-x86_64-unknown-linux-gnu’ is not installed”.
在这里插入图片描述

开始编译

回退到上一级目录,执行make milvus编译。

cd milvus
make milvus

【注】在编译的时候,请记得关掉梯子再编译!!!
若失败,make clean再次make milvus。

经过漫长的等待,最后出现下面的界面表示构建完成。
看到Build Milvus就构建成功了。
在这里插入图片描述

测试Milvus是否安装成功

运行如下命令:

./bin/milvus

在这里插入图片描述
以上,Milvus 在 Ubuntu 20.04 / Ubuntu 22.04 环境中的编译安装已完成!

遇到的问题

问题1:

"fatal: destination path 'opendal' already exists and is not an empty directory. 

解决办法:

rm -rf opendal/

问题2:

error: toolchain '1.73-x86_64-unknown-linux-gnu' is not installed

解决办法:
更改源码脚本,将cargo +1.73 build更改为rustup run 1.73.0 cargo build --release

问题3:

提示Cargo.html不存在,这种是编译的第三方库没有完整下载所以报错找不到,解决方法是删掉整个源码目录,再次编译。

问题4:

无法加载共享库。

 error while loading shared libraries: libfolly_exception_tracer_base.so.0.58.0                 -dev: cannot open shared object file: No such file or directory

解决办法:
跟着我上面的流程走,安装了fmt,相关依赖包,及folly,依赖库肯定存在,此时,我们只需要找到这个依赖文件位置,将其放入/usr/local/lib下,再配置环境变量,使其生效即可。

  1. 使用find命令查找缺少依赖文件libfolly_exception_tracer_base.so.0.58.0-dev具体位置
find / -name libfolly_exception_tracer_base.so.0.58.0-dev 2>/dev/null

查找结果如下:
在这里插入图片描述
2. 制作软链接

 sudo ln -s /milvus/cmake_build/lib/libfolly_exception_tracer_base.so.0.58.0-dev /usr/local/lib/libfolly_exception_tracer_base.so.0.58.0-dev
  1. 配置环境变量

在这里插入图片描述

问题5:

cargo部署路径要在/usr/bin之前,所以配置如下:
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_43893755/article/details/135339396
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。