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

Milvus源码编译安装

  • Milvus源码编译安装
    • Golang和C++开发环境安装
    • 源码安装编译基础依赖:OpenBLAS
    • 安装Rust
    • 安装前置依赖
    • 下载源码
    • 更改安装脚本
    • 开始编译
    • 测试Milvus是否安装成功
  • 遇到的问题
    • 问题1:
    • 问题2:
    • 问题3:
    • 问题4:
    • 问题5:

网上可参考的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之前,所以配置如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285889.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java常用数据结构

List:ArrayList 和 LinkedList 1、ArrayList 和 LinkedList都是非线程安全 2、ArrayList 可以直接根据下表定位元素,查找速度快,但是修改元素慢;LinkedList 查找元素必须从第一个开始逐个查找,查找速度慢&#xf…

开关电源输入输出电压测试方法:如何用开关电源智能测试系统测试输入输出电压?

一、用万用表测量输入输出电压 1. 连接万用表到电路中 2. 将万用表调到直流电压挡,连接红表笔到开关电源正极,连接黑表笔到开关电源负极。 3. 打开电源,读取万用表显示的电压值。 二、用示波器测量输入输出电压 1. 连接示波器到电路中 2. 将示…

【索引的数据结构】第2章节:InooDB和MyISAM索引结构对比

目录结构 之前整篇文章太长,阅读体验不好,将其拆分为几个子篇章。 本篇章讲解 InnoDB 和 MyISAM 索引结构对比。 InnoDB 的 BTree 索引注意事项 根页面位置万年不变 上述我们在索引迭代的过程中,为了更佳形象的描述,所以将顺序…

机器学习(二) -- 数据预处理(1)

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 未完待续…… 目录 系列文章目录 前言 一、概述 二、数据获取 三、数据分布与趋势探查 1、散点图 2、折线图 3、频率分布直…

SpringMVC框架

SpringMVC 三层架构MVC模式SpringMVC入门案例总结 三层架构 表现层(web) 页面数据的收集,产出页面 业务逻辑层(service) 业务处理 数据访问层(Dao) 数据持久化 MVC模式 SpringMVC 基于Java…

BOSS直聘上算法岗位的薪资分析

目录 一、数据介绍及预处理 1、数据介绍 2、数据预处理 二、数据分析 1、缺失值统计 2、岗位数量、薪资水平统计 3、企业维度岗位数量 4、top薪资岗位 三、划重点 少走10年弯路 元旦抽空爬取了一下BOSS直聘上base北京的算法岗位的相关数据,本文简单分析拿…

Linux 系统拉取 Github项目

一、安装Git 在Linux上拉取GitHub项目可以使用Git命令。首先确保已经安装了Git。如果没有安装,可以通过包管理器(比如apt、yum)来进行安装。 sudo yum install git #查看安装版本 git -version二、关联GitHub 配置本地账户和邮箱 >>…

HarmonyOS4.0系统性深入开发08服务卡片架构

服务卡片概述 服务卡片(以下简称“卡片”)是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的。卡片常用于嵌入到其他应用(当前卡片使用方只支持系统应用,如桌…

《师兄啊师兄》:以“稳健”诠释修仙,反套路喜剧动画赢麻了!

在众多动画题材中,修仙动画一直以其独特的东方神秘色彩和热血的打斗场景深受观众喜爱,可以说是国漫中最具本土特色的题材之一。近年来,大量的修仙题材爆款IP被改编成动画,整体反响非常热烈。动画男主角们通过不断地修炼&#xff0…

深度学习——PIL和OpenCV

PIL 官方文档 格式互转 opencv cv2.imread() 参数: filepath:读入imge的完整路径 flags:标志位,{cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED} cv2.IMREAD_COLOR:默认参数&…

Cypress安装与使用教程(3)—— 软测大玩家

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

计算商场优惠

#include<stdio.h> #include<string.h> #include<math.h> double amount(double list[], int n, double min) {int i;double sum 0, cheap list[0];for (i 0; i < n; i){sum sum list[i];if (list[i] < cheap) //找出最小的cheap list[i];}if (n…

Rust赋值语句和数字类型

赋值语句 在Rust中&#xff0c;使用let关键字定义变量。格式是let 变量名:变量类型 变量值;&#xff0c;下边是个例子&#xff1a; let age:i32 18;这就是定义一个有符号32位的数字变量age&#xff0c;而其中的值是18。 而在C语言定义变量的语句格式是类型 变量名 变量值。…

Tinker 环境下数据表的用法

如果我们要自己手动创建一个模型文件&#xff0c;最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…

【软件工程】设计概念

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 软件工程中的设计概念 概念&#xff1a; 结语 我的其他博客 前言 在数字时代的浪潮中&#xff0c;软件工程设计成为塑造创新…

钡铼案例 污水处理远程监控系统的应用介绍

背景 这几年以来&#xff0c;随着国家对环保方面的重视&#xff0c;各地纷纷建立了自己的污水处理站。如何才能保护水资源让其循环利用达到节能减排&#xff0c;是目前急需解决的&#xff0c;正是污水处理项目对水资源的改善以及人民生活水平的提高有着重大的意义。 污水处理…

AC——对HTTPS数据进行行为审计时的解密方式

目录 SSL中间人解密 客户端代理解密&#xff08;准入插件解密&#xff09; 深信服的AC提供两种SSL解密技术用于对https行为进行解密 中间人解密和准入插件解密 SSL中间人解密 解密工作原理 当内网PC端发起SSL连接请求的时候&#xff0c;AC会以代理服务器的身份&#xff0…

vba抓取网页数据

哈喽&#xff0c;哈喽&#xff0c;大家好&#xff01;大家2024发大财啦&#xff01; 不知道&#xff0c;平时大家爱不爱看电影呢&#xff1f;从今年的贺岁档的拍片来看&#xff0c;今年的电影还挺多&#xff0c;而且国产优秀电影居多&#xff0c;元旦假期期间我也去看了部喜剧…

【数据库原理】(4)数据模型介绍

在数据库中&#xff0c;数据不仅包含数据本身的内容&#xff0c;还包括数据之间的关系。这是因为计算机无法直接处理现实世界中的具体事物&#xff0c;因此必须将这些事物抽象成数据模型&#xff0c;以便计算机处理。 数据处理的三个领域 数据从现实世界到数据库里的具体表示…

【C++学习】:命名空间、输入输出和缺省参数全面解析

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 命名空间1.1 为什么需要命名空间&#xff1f;1.2 命名空间的定义1.3 命名空间特性1…