ubuntu22 minenet与containernet环境切换兼容

问题说明:

在已经安装mininet环境后,在git clone containernet后,依照git/containernet官网给出安装要求操作,或是使用“python3 ./setup.py”安装,最终都导致运行containernet调用docker时报错:“cannot import docker from mininet”,大致意思就是没法从python默认库中minine找到containernet独特添加的内容。

解决说明:

打开报错提示的python默认lib路径的mininet文件夹中的node,的确找不到一点containernet的影子——一看这就是原始mininet环境下的包,原封未动,完全没有换成containernet自己扩充过的东西。现在就是一件让人头痛的事情了。

这个错误之前发生过一次,中间不知道怎么好了,但是从containernet环境切回mininet环境后现在梅开二度,又来了。尝试了改掉所有containernet所需包名称为mininet2,但是因为所有都必须在su和gedit基础上完成,一个一个来简直太麻烦了,还不知道未来会不会有其他的隐雷等着…

删掉mininet后,运行containernet报错:必须安装mininet才能运行containernet。看来mininet不得不装。

此时,观察containernet文件加,发现里头内容和原始mininet相似——甚至我比较后能说,containernet的文件中已经包含了一套自己的mininet(还是升级版)——而最初mininet安装是执行util/install.sh -a。这个过程中,能确知脚本会向py库中刷入mininet自己的包。那依照如此逻辑,containernet是否也能做一遍,然后把自己需要的mininet环境刷刷入呢?

尝试后,果然成功。

下次想要切换环境,一定别对mininet使用视频中的install.sh了,这会把库刷回原始mininet;而再想回containernet还得install重刷,而containernet安装不管三七二十一都是清空路径从头git所有依赖库,比如openflow、pox,这玩意儿链接可靠度又非常堪忧,得尝试好几遍,太麻烦了,别这么做了。

所以下次mininet与containernet切换改怎么做呢?

先install.sh好containernet,然后想切换谁的时候,就到他的路径下执行./setup.py。别再走任何install.sh了。

这个动作讲避免py的lib反复被刷。虽然此时库是containernet非mininet,但暂时看来container是mininet的有过之无不及,即前者是后者超集。

Setup完,cli的提示符就会根据你执行的变成“containernet”或“mininet”。乍一看,库都没刷,那到底setup了些啥——事实上,发现py的lib路径下还有一个mininet.啥的egg文件,每次setup都会刷新一下这个文件。这里面就包含了mn的一些基础指令支持,比如mn -c(清空mininet/containernet缓存内容),比如mn(启动mininet/containernet范例)。这些行为在两种环境下好像是具有差别的,比如mininet肯定做不到清空进程的时候杀掉containernet中正在执行的docker。由此。

至于我怎么发现的,是之前不知怎的改了egg文件里script中的mn文件,然后执行mn就报错说里头有问题。删掉后,正愁不知道怎么办时尝试了重新./setup一下,发现文件又回来了,欣喜若狂。

为什么视频中的切回mininet使用install.sh,切到containernet使用setup.py能成功?去对应路径查看,发现视频中所用虚拟机mininet为python(2)版本,containernet为python3版本——所以两者的库路径天然隔离从而能无缝切换…我之所以会出现如此问题,是因为我的俩环境均使用python3——俩又都需要mininet的lib故而安装完mininet后库中内容仅是mininet的,不含对containernet的支持。

不过我还是觉得上述逻辑有点牵强。其实containernet官网安装过程中我最后一句话时报错了的。anyway,现在安装containernet中的install.sh就好了,不会有错——毕竟能保证py库中的mininet文件夹刷成了containernet使用的升级版。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值