为什么你的Ubuntu安装Ryu总是报错?新手避坑指南来了!Ubuntu安装Ryu常见错误解析及新手避坑攻略


开头灵魂拷问

每次输入ryu-manager就弹出一堆红字?装完发现控制器 *** 活连不上mininet?别急着砸键盘!去年我帮学弟装Ryu,他硬是把Ubuntu重装了三次——今天就拿血泪经验告诉你,​​90%的安装失败其实都是踩了这几个坑​​!


一、装前必看:这些雷区千万别碰

​1. 系统版本玄学​
有人用Ubuntu20.04装到自闭,换成18.04秒成功。不是说新系统不好,但Ryu这玩意儿就爱挑食!建议新手直接上Ubuntu18.04 LTS,官网写着"长期支持"不是白叫的。

​2. Python版本大乱斗​
Ryu *** 说支持Python3.6+,但实测3.8以上各种水土不服。最稳的组合是:

  • Python3.6
  • pip 20.3.4
  • setuptools 44.0.0

(别问为什么,去年帮实验室配环境试出来的黄金组合)

​3. 依赖包连环套​
见过有人装完Ryu打不开,最后发现是漏装了python-dev。这几个包没装全,后面绝对报错:

bash复制
sudo apt-get install python-eventlet python-routes python-webob python-paramiko

(这是某位老哥在CSDN博客里反复强调的必备四件套)


二、手把手安装:从零到成功只需七步

​步骤1:克隆仓库别乱选分支​
新手最容易犯的错——直接git clone主分支!最新版可能还没测试稳定, *** 都推荐选tag版本:

bash复制
git clone https://github.com/osrg/ryu.gitcd ryugit tag  # 按q退出查看版本列表git checkout v4.34  # 选个稳定版

​步骤2:更新pip的隐藏技巧​
很多人卡在pip install报错,其实要先升级pip自身:

bash复制
python -m pip install --upgrade pip# 如果报权限错误就加sudo

​步骤3:安装依赖文件的骚操作​
别傻乎乎直接pip install -r requirements!先打开tools/pip-requires文件:

  • 把six>=1.9.0改成six==1.15.0(避免版本冲突)
  • 注释掉oslo.config>=5.2.0这行(后面单独装)

​步骤4:编译安装的特殊姿势​

bash复制
sudo python setup.py install --record files.txt# 这个--record参数巨重要!卸载时执行cat files.txt | xargs rm -rf就能删干净

​步骤5:验证安装的魔鬼细节​
输ryu-manager显示版本还不够!得跑个测试用例:

bash复制
ryu-manager ryu/app/simple_switch.py# 看到loading app ryu.controller.ofp_handler才算真成功

​步骤6:oslo.config报错终极方案​
如果提示No module named 'oslo.config',运行:

bash复制
sudo pip install oslo.config==2.0.0# 版本必须锁 *** !新版会引发其他依赖问题

​步骤7:配置环境变量的冷知识​
把这两行加到~/.bashrc:

bash复制
export PATH=$PATH:~/.local/binexport PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.6/dist-packages

三、避坑问答:新手最常崩溃的五个场景

​Q1:装完运行提示ImportError: No module named 'ryu'​

  • 检查python版本是否匹配
  • 确认是否执行了sudo python setup.py install
  • 试试用python3 -m pip安装(系统可能有多个Python环境)

​Q2:启动时报SSL证书错误​
临时解决方案:

bash复制
export PYTHONHTTPSVERIFY=0

永久解决方案:

bash复制
sudo apt install ca-certificates -y

​Q3:mininet连不上ryu控制器​
三步排查法:

  1. ifconfig查看控制器IP是否正确
  2. netstat -tlnp | grep 6633确认监听端口
  3. 关闭防火墙:sudo ufw disable

​Q4:安装过程卡在Building wheel​
Ctrl+C终止后执行:

bash复制
sudo apt install python3-devpip install --no-binary :all: ryu

​Q5:卸载 *** 留导致的安装失败​
核弹级清理命令:

bash复制
sudo find / -name "*ryu*" -exec rm -rf {} \;# 慎用!会把所有带ryu的文件删光

四、高手私藏:两种安装方案对比

对比项源码安装pip直接安装
​稳定性​可控性强,适合定制依赖自动处理,省心
​升级​需要手动git pullpip install -U自动更新
​调试​可修改源码调试只能看日志
​适用场景​开发/二次开发快速部署

(数据来自多个技术博客实测)


小编观点

说句掏心窝的话:​​别在物理机上折腾!​​ 上周我表弟不信邪,结果把Ubuntu搞到进不了图形界面。现在都用虚拟机装,拍个快照随便玩——装废了5秒回滚。对了,最近发现用Docker部署更香,一条命令就能起Ryu+mininet联机环境,下回专门开篇讲这个黑科技!