ubuntu20.04安装9.0.3版本的CORE ,整体流程按照官网的步骤来。这里官网使用的是Ubuntu22,python版本要大于3.9。官方验证过可以安装的版本有ubuntu18、20、22,但只给出了ubuntu22的安装方法,由于18、20的python版本较低,不满足安装条件,所以有些问题需要注意一下,我这里记录一下。
Ubuntu - CORE Documentation (coreemu.github.io)
1.安装新版本的python
由于CORE9.0.3需要python3.9及以上版本支持,而ubuntu20python版本是3.8,所以第一步先添加一个新版的python
- 这里使用源码包安装,防止ubuntu因为python3版本被替换而产生一些其他的错误(我开始换了,然后终端打不开了,然后重装了系统)
- Ubuntu 下安装最新 Python3.10 教程 (源码安装)-CSDN博客按照这两位老哥的方法装就可以,按照第一位老哥的改一下setup文件,然后按照第二位老哥的装就可以了。不改的话后面会报no module named ssl的错。Ubuntu下python3.8报错No module named _ssl解决-CSDN博客Ubuntu 下安装最新 Python3.10 教程 (源码安装)_ubuntu安装python3.10_Z.Q.Feng的博客-CSDN博客
2.安装CORE
- python版本换完了按照官方步骤装就行,上述的安装步骤到这里都不会有问题,git 403的自行解决。
# 安装依赖环境 sudo apt-get update -y sudo apt-get install -y ca-certificates git sudo wget tzdata libpcap-dev libpcre3-dev \ libprotobuf-dev libxml2-dev protobuf-compiler unzip uuid-dev iproute2 iputils-ping \ tcpdump # 安装CORE cd ~/Documents git clone https://github.com/coreemu/core cd core
之后运行安装脚本,这里由于我们之前python3.10关联的python命令,所以需要进入脚本setup.sh修改一下。这里是吧开始的python3改成了python,把下面的PYTHON_DEP改成的PYTHON。
#!/bin/bash ########################################## PYTHON="${PYTHON:=python}" PYTHON_DEP="${PYTHON_DEP:=python}" ########################################## # install pre-reqs using yum/apt if [ -z "${NO_SYSTEM}" ]; then if command -v apt &> /dev/null then echo "setup to install CORE using apt" ######################################################## sudo apt install -y ${PYTHON_DEP}-pip ${PYTHON}-venv ######################################################## elif command -v yum &> /dev/null then echo "setup to install CORE using yum" sudo yum install -y ${PYTHON_DEP}-pip else echo "apt/yum was not found" echo "install python3, pip, venv, pipx, and invoke to run the automated install" exit 1 fi fi # install tooling for invoke based installation ${PYTHON} -m pip install --user pipx==0.16.4 ${PYTHON} -m pipx ensurepath export PATH=$PATH:~/.local/bin pipx install invoke==1.4.1 pipx install poetry==1.2.1
改完之后运行然后刷一下
./setup.sh source ~/.bashrc
然后改tasks.py里面的python3,也是改成python,这里有两处,我这里实在118和122行。
然后安装
inv install
- 这里面会使用到git,网不好的下不下来可能,自己注意一下。然后如果第一次没下下来但创建了文件夹,则会在之后的下载里冲突,提示你已经建立了这个文件夹,这里如果一次没有装完的话要把文件夹手动删掉,名字我记着是ospf-mdr(好像还有另一个,具体的你看提示吧,名字记不清了),在你git的core文件夹的上一级,这里按照官方教程走过来的话就是在~/Download目录下
- 这里如果Ubuntu下不下来的话,自己把这个c.run注释掉,然后自己把这个文件夹放到~/Download目录下,名字就叫ospf-mdr。他好像还git了另一个,如果不行的话还是一样的操作
3.安装EMANE
直接按照官方步骤来就行,我记着没出错
# install emane cd ~/Documents wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.6/protoc-3.19.6-linux-x86_64.zip mkdir protoc unzip protoc-3.19.6-linux-x86_64.zip -d protoc git clone https://github.com/adjacentlink/emane.git cd emane ./autogen.sh ./configure --prefix=/usr make -j$(nproc) sudo make install cd src/python make clean PATH=~/Documents/protoc/bin:$PATH make sudo /opt/core/venv/bin/python -m pip install .
4.运行及其他问题
按照以上步骤就装完了,此时CORE已经在/opt/core/venv下创建了一个虚拟环境,可以在此目录下使用source bin/activate 激活环境 deactivate退出。你需要把环境变量添加以下,这也是官方步骤的最后一步。
但是除此之外还有些小问题需要处理
1、在虚拟环境pip安装时出现没有权限
这主要是因为在创建虚拟环境时使用了root用户
sudo chown -R 用户名:用户名 /opt/core/venv
这里后面的地址就是虚拟环境的地址没有虚拟环境权限
2、no moudule named _tkinter
这个问题发生在想要使用core-gui时,会爆出没有tk模块的错误。
这主要是因为我们使用了两个版本的python且ubuntu20的默认版本时3.8,这就导致你在使用apt安装tk这一基础库时只安装3.8的版本(试了一下,换了默认版本之后也只是安装3.8的版本,可能是看的linux内核吧)。按照网上的apt安装tk3.10版本也是各种装不上,为此我们需要手动安装tk
- 去这个网站Search Results for python3-tk (pkgs.org)下载一个3.10版本的的tk,我下的这个版本的
http://archive.ubuntu.com/ubuntu/pool/main/p/python3-stdlib-extensions/python3-tk_3.10.4-0ubuntu1_amd64.deb
- 使用dpkg命令解压到某处
dpkg -x python3-tk_3.10.4-0ubuntu1_amd64.deb /tmp/tkinter
- 将.so文件复制到python3.10的依赖目录
sudo cp /tmp/tkinter/data/usr/lib/python3.10/lib-dynload/_tkinter.cpython-310-x86_64-linux-gnu.so /usr/local/lib/python3.10/lib-dynload/
这样你电脑上的环境九安装成功了,但是进入虚拟环境的话还是缺失。需要在虚拟环境内也复制一份(推测先进行这一步在创建环境的话可能就不需要了)。
- 粘贴到虚拟环境中的python3.10的依赖中
cp /tmp/tkinter/data/usr/lib/python3.10/lib-dynload/_tkinter.cpython-310-x86_64-linux-gnu.so /opt/core/venv/lib/python3.10/site-packages/
- 在运行core-gui应该就可以正常运行了。