ubuntu22.04へのSDNフレームワークRyuのインストール
Q&A
Closed
現在の状況(2023/6/22)
ubuntu22.04での動作を諦め、ubuntu20.04で環境構築を行ったところ正常に動作しました。
解決したいこと
仮想マシン(ubuntu22.04)にopenflowの環境を作成しようと、以下のことを行っています。
①mininetのインストール
②Ryuのインストール
このために次のコマンドをそれぞれ実行し①までを終わらせ、mininetの動作確認を行い、mininetは正常にインストールできたことを確認しました。
(2.3.1b4-2-g5b1b376はmininetの最新版です)
$sudo apt update
$sudo apt upgrade
$sudo apt-get install build-essential
$sudo apt-get install git
$git clone https://github.com/mininet/mininet.git
$cd mininet
$git checkout -b 2.3.1b4-2-g5b1b376 2.3.1b4-2-g5b1b376
$util/install.sh
次に②を行うため、次のコマンドでRyuをインストールしました。
$git clone https://github.com/faucetsdn/ryu.git
$cd ryu; pip install .
2行目のコマンドを実行後、インストール処理の最後に次の警告があり、その後Ryu-managerを実行できなかったため、その下のコマンドでPATHを作りました。
WARNING: The scripts ryu and ryu-manager are installed in '/home/vagrant/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
$export PATH="/home/vagrant/.local/bin:$PATH"
発生している問題・エラー
以上を行った後、ryu-manager --versionを実行すると次のエラーが発生してしまい、解決法が分かりません。何かわかることがあれば教えていただけるとありがたいです。
Traceback (most recent call last):
File "//home/vagrant/.local/bin/ryu-manager", line 5, in <module>
from ryu.cmd.manager import main
File "/home/vagrant/.local/lib/python3.10/site-packages/ryu/cmd/manager.py", line 22, in <module>
from ryu.lib import hub
File "/home/vagrant/.local/lib/python3.10/site-packages/ryu/lib/hub.py", line 30, in <module>
import eventlet
File "/home/vagrant/.local/lib/python3.10/site-packages/eventlet/__init__.py", line 17, in <module>
from eventlet import convenience
File "/home/vagrant/.local/lib/python3.10/site-packages/eventlet/convenience.py", line 7, in <module>
from eventlet.green import socket
File "/home/vagrant/.local/lib/python3.10/site-packages/eventlet/green/socket.py", line 4, in <module>
__import__('eventlet.green._socket_nodns')
File "/home/vagrant/.local/lib/python3.10/site-packages/eventlet/green/_socket_nodns.py", line 11, in <module>
from eventlet import greenio
File "/home/vagrant/.local/lib/python3.10/site-packages/eventlet/greenio/__init__.py", line 3, in <module>
from eventlet.greenio.base import * # noqa
File "/home/vagrant/.local/lib/python3.10/site-packages/eventlet/greenio/base.py", line 32, in <module>
socket_timeout = eventlet.timeout.wrap_is_timeout(socket.timeout)
File "/home/vagrant/.local/lib/python3.10/site-packages/eventlet/timeout.py", line 166, in wrap_is_timeout
base.is_timeout = property(lambda _: True)
TypeError: cannot set 'is_timeout' attribute of immutable type 'TimeoutError'
自分で試したこと
上のエラーの最後のTypeErrorの行と同様のエラーを質問したものがgithub上にあり、そこでの解決法と同様の操作を試したのですが、それによってPythonのバージョン互換のエラーが新たに発生するのか、他のエラーが発生し解決できませんでした。
そのgithubのリンクは「https://github.com/eventlet/eventlet/issues/733」です。