1.簡介
Bazel是一個類似於Make的工具,是Google為其內部軟件開發的特點量身定制的工具,如今Google使用它來構建內部大多數的軟件。它的功能有諸多亮點:
- 多語言支持:目前Bazel默認支持Java、Objective-C和C++,但可以被擴展到其他任何變成語言。
- 高級構建描述語言:項目是使用一種叫BUILD的語言來描述的,它是一種簡潔的文本語言,它把一個項目視為一個集合,這個集合由一些互相關聯的庫、二進制文件和測試用例組成。相反,像Make這樣的工具,需要去描述每個文件如何調用編譯器。
- 多平台支持:同一套工具和相同的BUILD文件可以用來為不同的體系結構構建軟件,甚至是不同的平台。在Google,Bazel被同時用在數據中心系統中的服務器應用和手機端的移動應用上。
- 可重復性:在BUILD文件中,每個庫、測試用例和二進制文件都需要明確指定它們的依賴關系。當一個源碼文件被修改時,Bazel憑這些依賴來判斷哪些部分需要重新構建,以及哪些任務可以並行進行。這意味着所有構建都是增量的,並且相同構建總是產生一樣的結果。
- 可伸縮性:Bazel可以處理大型項目;在Google,一個服務器軟件有十萬行代碼是很常見的,在什么都不改的前提下重新構建這樣一個項目,大概只需要200毫秒。
對於為什么要重新發明一個構建工具而不直接使用Make,Google認為Make控制得太細,最終的結果完全依靠開發人員能正確編寫規則。很久以前,Google使用自動生成的臃腫的Makefile來構建他們的軟件,速度太慢,結果不可靠,最終影響了研發人員的效率和公司的敏捷性。所以他們做了Bazel。Bazel的規則層次更高,比如,對於“Java測試”、“C++二進制文件”,它都有定義好的內建規則,而這些規則都已經被無數的測試證明是正確和穩定的。
2.安裝
(1) 安裝JDK 8
***如果環境是Ubuntu15.10,跳過此步驟。但在Ubuntu14.04,執行此步驟,安裝Oracle JDK 8.***
***如果沒有安裝add-apt-repository命令,需要執行sudo apt-get install software-properties-common命令***
$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer
(2) 添加bazel包源
$ echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
***如果沒有安裝curl需要執行命令:sudo apt-get install curl ***
$ curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -
(3) 更新安裝bazel
$ sudo apt-get update && sudo apt-get install bazel
$ sudo apt-get upgrade bazel
***執行最后一步 $ sudo apt-get upgrade bazel,出現錯誤 E: Sub-process /usr/bin/dpkg returned an error code (1)***
解決方法:
sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bak //現將info文件夾更名
sudo mkdir /var/lib/dpkg/info //再新建一個新的info文件夾
sudo apt-get update sudo apt-get -f install bazel sudo apt-get upgrade bazel
sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bak sudo rm -rf /var/lib/dpkg/info //把自己新建的info文件夾刪掉 sudo mv /var/lib/dpkg/info.bak /var/lib/dpkg/info //把以前的info文件夾重新改回名字
至此,已安裝成功bazel~~~
參考:https://www.bazel.io/versions/master/docs/install.html#ubuntu
http://blog.csdn.net/u010510350/article/details/52247972
http://blog.sina.com.cn/s/blog_15856a0240102x7jv.html
http://blog.csdn.net/yusiguyuan/article/details/24269129