在經歷了無數的折騰之后,算是折騰,最后采用的是陳翔學長的腳本加上可愛的shell調整裝好的。 鏈接:p4Install
也許是ubuntu18.04的問題,也有可能是我自己把這個系統折騰的有點雜亂的原因,中途出現的問題一度讓我抓瞎了好久。
安裝p4c-bm
命令
1 //安裝pip 2 sudo apt-get install python-pip 3 //克隆庫 4 git clone https://github.com/p4lang/p4c-bm.git 5 cd p4c-bm 6 //安裝python相關的組件 7 sudo pip install -r requirements.txt 8 sudo pip install -r requirements_v1_1.txt 9 //運行安裝的py腳本 10 sudo python setup.py install
問題
問題是出在最后一條命令,顯示的錯誤是
1 Traceback (most recent call last): 2 File "setup.py", line 25 in <module> 3 import p4c_bm 4 File "/home/user/p4Installer/p4c_bm/p4c_bm/__init__.py", line 23, in <module> 5 from version import get_version_str 6 ModuleNotFoundError:No module named 'version'
錯誤的意思就是找不到version這個模塊,因為setup.py要調用的模塊和其不在一個目錄下,所以在相對應的目錄p4c<bm下有個__init__.py的文件來幫助執行,但是卻找不到同目錄下的version模塊。 其實第一時間我的修改方法是將原語句修改成了
1 from .version import get_version_str
然后這玩意又找不到同目錄下的_version了,最后在詢問過學長之后,了解到這個setup.py是在python2環境下運行的,然而18.04的系統默認運行的貌似是3?而這個代碼正好與3不兼容,就會產生沖突,在3中反而要使用absolute imports。於是將命令修改為
1 sudo python2 setup.py install
就成功了。ヽ(✿゚▽゚)ノ
安裝bmv2
命令
1 sudo git clone https://github.com/p4lang/behavioral-model.git 2 sudo mv behavioral-model bmv2 3 cd bmv2 4 //安裝依賴 5 sudo ./install_deps.sh 6 //編譯bmv2 7 sudo ./autogen.sh 8 sudo ./configure --disable-logging-macros --disable-elogger 9 sudo make -j8 10 //安裝 11 sudo make install 12 //更新共享庫 13 sudo ldconfig
關於make后面的參數-j是並行的意思,根據自己電腦cpu的核心情況選擇,可以加快編譯的速度。
問題
這里我出於習慣在其中加入了一句make check來檢查編譯以后的結果是否可用。 然后就被報了錯:
查看完testsuit.log之后發現是thrift的問題,然后就跑到鏡像網站上下了一份thrift0.12.0的壓縮包來安裝,結果安裝還出錯了,說什么缺少java的組件,導致buildfaild。真是坑中帶坑,最后發現是自己openjdk有問題,干脆就下了個oracle的jdk8(其實jdk9也會報錯)。然后就安裝成功了。 然后繼續重裝bmv2,然后繼續同樣的報錯。(°ー°〃),心中一萬只草泥馬呀。 折騰了一天,最終去問了問學長,結果讓我嘗試了下安裝。 結果居然,安裝成功了,成功了,功了。既然你安裝沒有問題,你報錯個什么勁啊。又是系統的鍋嘍。
安裝p4c
這玩意需要挺多依賴的,還需要安裝protobuf,然后gcc/g++和cmake。
問題
- 原腳本中gcc和g++采用的是4.9的,這個在新的系統里已經找不到源了,所以我就直接用gcc/g++ 5.5的版本了。
- cmake也是,那個源甚至沒有了release,所以cmake我是用的3.10的。
- 然后更悲慘的是安裝到一半,分配給ubuntu的硬盤滿了……,然后又迫不得已轉到u盤系統分了點硬盤給/目錄。
- 然后最后我在處理完一切編譯之后又來了一次make check。這次更狠了,fail了將近200個……一狠心,安裝!然后又沒報錯……合着又玩我呢。
總結
雖然不知道以后使用會不會出現新的問題,感覺又挖了許多坑。