为什么你的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控制器
三步排查法:
- ifconfig查看控制器IP是否正确
- netstat -tlnp | grep 6633确认监听端口
- 关闭防火墙: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 pull | pip install -U自动更新 |
调试 | 可修改源码调试 | 只能看日志 |
适用场景 | 开发/二次开发 | 快速部署 |
(数据来自多个技术博客实测)
小编观点
说句掏心窝的话:别在物理机上折腾! 上周我表弟不信邪,结果把Ubuntu搞到进不了图形界面。现在都用虚拟机装,拍个快照随便玩——装废了5秒回滚。对了,最近发现用Docker部署更香,一条命令就能起Ryu+mininet联机环境,下回专门开篇讲这个黑科技!