事情的起因
- 實驗需要安裝 p4 環境
- 我考慮到我自己的電腦效能不足,因此打算在本機安裝
- github上官方倉庫的安裝教程老舊,都是在 ubuntu14.04或者ubuntu16.04
- 我長時間用的linux系統是 ubuntu20.04
鑑於以上原因,我開始自己對p4安裝的專研。。
這個是我自己寫的shell指令碼,已經在 ubuntu 20.04上測試通過
先放上官網
[p4 github](https://github.com/p4lang/)
[p4 官網](https://p4.org/)
然後是踩的坑
- 使用了anacond,使得後續找不到python庫,另外使用sudo或root安裝庫會導致安裝的位置混亂
- 按照官方教程安裝,由於版本比較舊,導致原始碼編譯不通過,通過更新編譯不通過的原始碼包會因為p4各個模組的版本之間的依賴問題使得環境檢測make check出錯
- 計算機效能較差,編譯卡死過很多次
解決方案
以p4c著手,倒推各個依賴原始碼的版本,當依賴的版本無法編譯時,更新原始碼和依賴該原始碼的模組
以下是我自己寫的shell指令碼對應的解釋
設定各個模組的版本(因為各個版本之間有特定的以來關係)
配置 ovs 並將安裝日誌寫入對應檔案
mininet 的安裝,最後一行是 mininet 的測試,需要啟動 ovs ( ovs-ctl start )
p4 安裝中重要的依賴關係:protobuf
p4安裝中重要的依賴關係:grpc
bmv2 和 PI 模組的重要依賴
PI 模組的編譯安裝
bmv2 模組的編譯安裝
p4c 的編譯安裝
p4 使用參考文件
至此就安裝好了,指令碼中有些 make check 可以安裝好再測試.....
因為如果之前安裝過 p4,但出現了錯,註釋掉的那些 make check 可能導致指令碼報錯停止。。。
由於時間比較匆忙,沒有做過多的 p4 介紹,,有時間再新增內容吧。。。