文章目录


前言

MP-SPDZ 0.3.4版本集成了很多外部依赖库,包括libOTe等,在安装配置的时候可能会出现一些预想不到的问题,以此纪录MP-SPDZ的本地安装配置过程以及docker镜像的制作。


一、本机安装配置好docker

docker安装配置参考:快速安装docker和docker-comopose

二、下载MP-SPDZ的官方版本

下载MP-SPDZ的官方发行版本,此次我使用的是0.3.4版本

mp-spdz-0.3.4.tar.xz

Releases · data61/MP-SPDZ (github.com)

三、安装依赖库

在解压了spdz库后发现,deps文件中的几个依赖库都是空的,如果自己的电脑能够翻墙且网速足够快的情况下 可以在spdz根目录下 执行 make -j 8 tldr,将会自动git下来所需要的依赖库,但是如果网络不够理想,则会频繁的显示超时或者连接失败,报出一堆错误。这时候可以用以下方法:

打开makefile文件搜索git关键字,可以发现总共需要git 六次依赖库,需要git的依赖库包括,Circuits,SimpleOT,SimpleOT_C,libOTe,mpir,simde。

将makefile中有关git依赖库的代码进行注释,并将这些代码单独在命令行使用。例如在命令行执行

SimpleOT:

git submodule update --init deps/SimpleOT || git clone https://github.com/mkskeller/SimpleOT deps/SimpleOT

SimpleOT_C

git submodule update --init deps/SimplestOT_C || git clone https://github.com/mkskeller/SimplestOT_C deps/SimplestOT_C

Circuits

git submodule update --init Programs/Circuits || git clone https://github.com/mkskeller/bristol-fashion.git Programs/Circuits

mpir

git submodule update --init deps/mpir || git clone https://github.com/wbhart/mpir deps/mpir

 libOTe

git submodule update --init --recursive deps/libOTe || git clone --recurse-submodules https://github.com/mkskeller/softspoken-implementation deps/libOTe

 simde

git submodule update --init deps/simde || git clone https://github.com/simd-everywhere/simde deps/simde

四、安装boost库的最新版本

安装完上述依赖库之后如果直接执行 make -j8 tldr 则可能还会报一个错

解决办法是安装最新的boost库。

参考:boost最新版本安装

五、编译MP-SPDZ

做完上述操作后,则可以在MP-SPDZ的根目录下直接使用

make  -j8 tldr

进行编译

耐心等待编译完成之后可以使用库中给出的demo进行验证。

./compile.py tutorial
echo 1 2 3 4 > Player-Data/Input-P0-0
echo 1 2 3 4 > Player-Data/Input-P1-0
Scripts/mascot.sh tutorial

使用make -j8 tldr编译过后可能并没有你所需要的协议,此时你可以使用以下命令来编译MP-SPDZ中所有的内容,这样会耗费比较长的时间。

make all

同时你也可以只针对你所需要的协议进行编译,例如

make -j 8 spdz2k-party.x或者make spdz2k-party.x

至此,MP-SPDZ在本地的安装配置就已经完成了。

六、build MP-SPDZ的docker镜像

频繁的配置MP-SPDZ非常麻烦,在新建的虚拟机上每次都要重新配置总会出现一些意想不到的问题,因此构建一个MP-SPDZ的docker镜像能解决不少麻烦。spdz中自带了dockerfile文件,但是在使用docker build 建立镜像的时候总是卡在第19步,make boost libote 总是会显示出错。我怀疑是因为路径的问题,需要把解压好的文件修改名称为MP-SPDZ并放在usr/src/目录下。但是我并没有尝试,下边是我自己的构建镜像的步骤

首先重新解压一个新的MP-SPDZ的文件,要求没有执行过以上编译。

然后修改Dockerfile文件如下

FROM python:3.10.3-bullseye as buildenvRUN apt-get update && apt-get install -y --no-install-recommends \automake \build-essential \clang-11 \cmake \git \libboost-dev \libboost-thread-dev \libclang-dev \libntl-dev \libsodium-dev \libssl-dev \libtool \m4 \texinfo \yasm \vim \gdb \valgrind \&& rm -rf /var/lib/apt/lists/*ENV MP_SPDZ_HOME /usr/src/MP-SPDZ
WORKDIR $MP_SPDZ_HOMERUN pip install --upgrade pip ipythonCOPY . .

执行命令构建镜像

docker run -d -it mpspdz:buildenv bash

然后使用docker ps 查看容器是否成功启动。若成功则进入容器中。

docker exec -it xxx(你自己的容器名称或者容器id) bash

进入容器发现MP-SPDZ已经被拷贝进来了,接下来只需要重复上述标题三到五的操作就可以了。


总结

以上是有关SPDZ的配置过程,有问题欢迎大家评论区留言讨论。

安装配置MP-SPDZ以及创建MP-SPDZ库的docker镜像相关推荐

  1. 【系列7】使用Dockerfile创建带mysql的Centos Docker镜像

    下面用官方的rpm源包安装mysql过慢不主张采用yum这种方式 1. 下载文件    从GitHub Dockerpool社区下载MySQL镜像项目: [root@docker1 ~]# git c ...

  2. Vue手把手带你入门(一) nodejs安装配置以及vue-cli脚手架创建第一个vue项目(超级详细)

    开发Vue程序的第一步就是PC安装配置node.js 1官网下载安装Node(我的安装路径是D:\nodejs\) 点我安装(安装在除C盘外任意一个磁盘中) 2 检查node和npm是否安装完成 下载 ...

  3. 【系列5】使用Dockerfile创建带weblogic的Centos Docker镜像

    Weblogic是一个基于Java EE架构的中间件(应用服务器),WebLogic由Oracle公司维护. WebLogic是用于开发.集成.部署和管理大型分布式Web应用.网络应用和数据库应用的J ...

  4. 创建支持nginx服务的docker镜像

    环境: [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@linux-n ...

  5. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  6. idea2019配置gradle详解_Java学习之——Gradle的安装配置、IDEA中创建Gradle的Java项目...

    Java作为一门世界级的主流编程语言,有一款高效易用的项目管理工具是Java开发者共同追求的心愿和目标.先是2000年Ant,后有2004年Maven两个工具的诞生,都在Java市场上取得了巨大的成功 ...

  7. 【Jmeter】安装配置:Jmeter 自定义创建桌面快捷方式

    目录 一.Jmeter 直接发送桌面快捷方式可能出现问题 二.制作 Jmeter 透明图标 ico (1)Jmeter 自带羽毛图标制作 ico (2)自定义图片抠图制作 ico (3)将制作好的 i ...

  8. HBase【环境搭建 01】CentOS 7.5 部署 hbase-2.4.5 单机版standalone模式(详细安装+配置+增删改查测试脚本)(附开源镜像站地址)

    HBase的 官网 内容还是挺多的,下载安装包还是使用 清华大学开源软件镜像站 会快一些 ⚡️ 本文的安装文件为:hbase-2.4.5-bin.tar.gz 1.前置条件 HBase 是一个构建在 ...

  9. 【系列8】使用Dockerfile创建带MongoDB的Centos Docker镜像

    MongoDB是一款可扩展.高性能的开源文档(Document-Oriented)数据库.它采用C++开发,支持复杂的数据类型和强大的查询语言,提供了关系数据库的绝大部分功能.MongoDB由于其高性 ...

最新文章

  1. 堆叠式传感器架构带来先进的视觉功能
  2. mysql截取不含%_zp blog
  3. 银行背景下分库分表技术选型
  4. Debian 9 安装ASP .NET CORE
  5. 【小白学PyTorch】15.TF2实现一个简单的服装分类任务
  6. Direct3D 开发之旅 3D 游戏基本概念的介绍2
  7. 基础练习 数列排序 c语言
  8. 大摩维持浩大游戏“增持”评级
  9. 关于 Azure SQL 数据库你不知道的 5 件事
  10. 【LeetCode】【HOT】4. 寻找两个正序数组的中位数(二分查找)
  11. 年轻人,看看 Redisson 分布式锁—可重入锁吧!太重要了
  12. 方法的重载与重写区别
  13. linux等 入门思维导图
  14. 拓端tecdat|使用Python中的ImageAI进行对象检测
  15. 我的世界手游java版的光影_我的世界光影整合包1.7.2
  16. Jlink软件下载和安装教程
  17. 演化博弈matlab代码,Matlab演化博弈仿真
  18. 高帝制礼作乐,周昌谏废太子
  19. 结果和过程到底哪个重要?
  20. python基础编程:python如何实现浪漫的烟花秀(附代码)

热门文章

  1. 蓝桥杯 BASIC-3 字母图形
  2. Exception in thread “main“ java.lang.NoSuchMethodError: scala.reflect.ClassT
  3. Python核心编程(一)
  4. Oracle数据库学习(一):Oracle 11g数据库下载及安装
  5. 苹果电脑修改MAC地址(随机生成)
  6. Vue中好用的打印组件 vue-print-nb
  7. iframe框架的使用
  8. java调用python文件的几种方式【超细讲解!】
  9. DOOM启世录的启示 1
  10. 【MATLAB】Linux下的matlab的安装