Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04

第零步 VMware虚拟机设置和安装Anaconda虚拟环境

因为后面要编译源码,所以最好把CPU设置为最大,例如我的电脑是4核8线程,则:

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第1张图片

 关于Anaconda虚拟环境,这里不再赘述,后面都假设已经安装好虚拟环境,Python版本为3.7,名称叫 baobao。

Python版本为3.7很重要!建议就使用这个,因为有人用Python3.8,最后有问题。

第一步 Ubuntu换源

先备份一下:

cd /etc/apt
sudo cp sources.list /etc/apt/sources_copy.list

换源:

1. 利用vim编辑文件:

sudo vim sources.list #加上sudo,不然可能无法写入

注:如果没有vim,那么用vi即可(不想用gedit,是因为打开比较慢) 

输入:

:%d

再按键盘上的字母 i,  把下面代码复制进去:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

# deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

按键盘上 ESC,输入:

:w!

按键盘上 Ctrl+D,退出。

更新:

sudo apt-get update

第二步 安装包/依赖

sudo apt-get install gcc make perl m4 flex bison python3-setuptools python3-dev libssl-dev libffi-dev python3-pip

接着: 

pip3 install pyparsing==2.4.6

注:因为Ubuntu20.04自带了Openssl1.1.1,所以就不需要安装这个了:

第三步 修改系统默认Python——使用update-alternatives工具

首先需要创建管理:

sudo update-alternatives --install /usr/bin/python python /home/wind/anaconda3/envs/baobao/bin/python3.7 1 
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2

你需要修改哪里?

0. 其实只需要第一行,第二行是为了后面解释一下update-alternatives是如何管理链接。

1. 下面框框里的东西,可以理解为一个控制台,这个控制台的名称叫做 python,你可以随便起名,叫做“狗”都行:

2. 修改下面两个框框的路径:

红框是你的虚拟环境的Python路径,如何获取呢?

虚拟环境下,输入:which python3.7,就用这个路径:

 

蓝框是非虚拟环境下的python路径,重新打开一个终端,输入 conda deactivate,再输入which python3.8(系统默认的),就用这个路径:

 注:路径最后面的 1 和 2 是优先级,你设置4 5 6都行,其实不重要,我们后面依然可以手动指定。

其次需要手动指定优先级:

sudo update-alternatives --config python # 最后python就是控制台的名字

看到如下: 

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第2张图片

只需要找到虚拟环境里的python3.7,然后看最前面的编号,例如上图是0和2,那么我只需要输入0或2,再按回车,那么update-alternatives工具就会自动帮你把虚拟环境里的python3.7设置为默认。这里很重要,因为后面编译 charm 的时候,必须保证 charm 依赖的版本是python3.7。

额外拓展:(和安装过程无关)

输入命令:

update-alternatives --display python

可以看到目前指向正确: 

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第3张图片

第四步 下载、编译和安装GMP、PBC

下载GMP:

Index of /download/gmp/

下载PBC:

PBC Library - Pairing-Based Cryptography - Downloads

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第4张图片

然后把安装文件放到目录下,我这里放到:/home/wind/baobao/

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第5张图片

解压编译安装GMP:

cd /home/wind/baobao/
sudo tar -jxvf gmp-5.1.3.tar.bz2
cd gmp-5.1.3/
sudo ./configure 
sudo make -j8
sudo make install

注:使用 make -j参数是调用多线程编译,例如4核8线程,那就:make -j8

解压编译安装PBC:

# 先cd ..退回到 baobao 目录
sudo tar -zxvf pbc-0.5.14.tar.gz
cd pbc-0.5.14/
sudo ./configure 
sudo make -j8
sudo make install

第五步 下载、编译和安装charm

 下载charm:

GitHub下载源码:GitHub - JHUISI/charm: Charm: A Framework for Rapidly Prototyping Cryptosystems

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第6张图片

 把下载好的 charm-dev.zip 文件拷贝到 baobao目录下,然后:

编译、安装:

sudo unzip charm-dev.zip 
cd charm-dev/
sudo ./configure.sh
sudo make -j8
sudo make install

成功后可以看到:

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第7张图片

注:可能在intall的时候报错,解决办法,重新编译和安装即可:

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第8张图片

第六步 跑个demo

vscode里选择解释器:

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第9张图片

运行,可能发现有一个报错: 

libpbc.so.1: cannot open shared object file: No such file or directory

解决办法:

cd /etc/ld.so.conf.d
sudo vi libpbc.conf

输入:

/usr/local/lib

保存,退出,最后:

sudo ldconfig

再次运行demo,成功:

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04_第10张图片


本文献给我的美丽可爱温柔大方的610宝宝~ ❤

你可能感兴趣的:(Python,linux,安全,python,同态加密,ubuntu)