Debian下編譯安裝Golang

我的Debian是用來工作的,因此用的是穩(wěn)定源烘嘱。穩(wěn)定源的優(yōu)點是昆禽,軟件經過充分的測試,處于穩(wěn)定版本蝇庭。這種狀態(tài)對于絕大多數(shù)軟件醉鳖,都是最合適的。

但是哮内,對于一些需要最新版本的軟件來說盗棵,穩(wěn)定源太過于滯后。

官網不僅連接不穩(wěn)定北发,二進制發(fā)布包也不夠全纹因。

目前(2016),Debian的穩(wěn)定源只能安裝go1.3版本琳拨。如果需要最新的版本辐怕,只能自行從源碼編譯安裝。

卸載舊版本

sudo apt-get remove golang
sudo apt-get autoremove

源碼下載

git clone https://github.com/golang/go.git

如果沒有Git从绘,必須自行解決寄疏;如果沒有gcc是牢,也需要自行安裝。

此外陕截,golang/go這個庫實在太大驳棱,近200MB。完整從GitHub上拉下來农曲,非常耗時社搅;在GitHub連接不穩(wěn)定時,也可能會失敗乳规。這屬于網絡問題形葬,讀者也需自行解決。

按時間順序暮的,這里記錄了一些相關的坑笙以。如果想直接按照正確的步驟完成編譯,可以跳到環(huán)境配置小節(jié)冻辩。

首次編譯錯誤

Go不支持在根目錄下編譯猖腕,必須到src目錄去。

$ cd src
$ ./all.bash
##### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find ~/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

我本來就是因為只有Go1.3恨闪,才要從源碼安裝新版本的√雀校現(xiàn)在找我要Go1.4,這可如何是好咙咽?

自舉

Go從1.5版本開始實現(xiàn)“自舉”(Bootstrap)老玛,也就是用Go來實現(xiàn)Go、用Go來編譯Go钧敞。之前都是用C來實現(xiàn)逻炊,編譯Go項目就是編譯C語言。

因此犁享,只要把源碼checkout到1.4版本余素,就可以不需要依賴于Go自身,解決自我依賴悖論炊昆。

git checkout go1.4
./all.bash

二次編譯錯誤:import cycle not allowed

import cycle not allowed
package ./cmd/dist
    imports bytes
    imports errors
    imports runtime
    imports runtime/internal/atomic
    imports runtime

Go不支持循環(huán)導入桨吊,不知算進步還是退步。

不過凤巨,這里倒是體現(xiàn)了價值视乐,提前報錯。這個錯誤的主要原因敢茁,是編譯時把GOROOT下的源碼與GOROOT_BOOTSTRAP下的搞混了佑淀。如果Go與Java一樣支持循環(huán)導入,那么這里就會進行一次錯誤的編譯彰檬。

這個問題大致是路徑配置錯誤導致的伸刃。未免誤導谎砾,這里就不詳述復現(xiàn)步驟了。

總之捧颅,先配置好GO的環(huán)境路徑景图,能解決大多數(shù)錯誤。

環(huán)境配置

為了避免go1.4這個目錄混雜在我本就已經混亂不堪的$HOME目錄碉哑,我新建一個隱藏目錄.golang挚币,作為Go的相關環(huán)境配置的位置。

把以下配置加入shell的配置文件扣典,bash是~/bashrc妆毕。

export GOROOT=$HOME/.golang/go
export GOPATH=$HOME/.golang/path
export GOROOT_BOOTSTRAP=$HOME/.golang/go1.4
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  • GOROOT是源碼與可執(zhí)行文件的位置。
  • GOPATH是放置Go的第三方安裝包的位置贮尖。(編譯過程中并未使用笛粘。)
  • GOROOT_BOOTSTRAP是用來自舉的Go目錄,是1.4版本远舅。
  • export PATH=*是添加編譯好的Go、以及以后通過go get安裝的第三方庫痕钢,進入可執(zhí)行環(huán)境图柏。這句,老鳥應該都很熟任连。
    由于GOROOT目錄下蚤吹,只有gogofmt兩個可執(zhí)行文件,所以也可以用軟鏈接來配置随抠。

注意:這里出現(xiàn)了gogo1.4兩個目錄裁着,它們本質上是相同的。為避免clone兩遍拱她,可以直接本地復制二驰。

cp -r go go1.4

正確的編譯步驟

  • 先進入GOROOT_BOOTSTRAP/src,執(zhí)行git checkout go1.4.3秉沼,切換到1.4.3版本桶雀。
  • 執(zhí)行./make.bash
    一般教程(比如本文前面首次編譯錯誤小節(jié))是用./all.bash唬复,其實沒必要矗积。./all.bash是編譯并測試,而./make.bash只是編譯敞咧。前者大約5分鐘棘捣,后者大約2分鐘。對我們這種Go語言的使用者而非開發(fā)者來說休建,顯然后者就夠了乍恐。
  • 進入GOROOT目錄评疗,執(zhí)行./make.bash

結束后禁熏,可以檢查版本壤巷。

$ go version
go version devel +f8187ce Mon Nov 7 02:55:52 2016 +0000 linux/amd64

咦?怎么版本怪怪的瞧毙!

這是因為master的HEAD胧华,通常是一個開發(fā)中的提交,是最新不穩(wěn)定版本宙彪。

如果想要穩(wěn)定版怎么辦矩动?

和編譯1.4.3版本類似,checkout過去再編譯释漆。比如悲没,我現(xiàn)在是1.7.3版本。

$ git checkout go1.7.3
...
$ ./make.bash
...
$ go version
go version go1.7.3 linux/amd64

感覺好多了男图。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末示姿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逊笆,更是在濱河造成了極大的恐慌栈戳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件难裆,死亡現(xiàn)場離奇詭異子檀,居然都是意外死亡,警方通過查閱死者的電腦和手機乃戈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門褂痰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人症虑,你說我怎么就攤上這事缩歪。” “怎么了谍憔?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵驶冒,是天一觀的道長。 經常有香客問我韵卤,道長骗污,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任沈条,我火速辦了婚禮需忿,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己屋厘,他們只是感情好涕烧,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汗洒,像睡著了一般议纯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溢谤,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天瞻凤,我揣著相機與錄音,去河邊找鬼世杀。 笑死阀参,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瞻坝。 我是一名探鬼主播蛛壳,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼所刀!你這毒婦竟也來了衙荐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浮创,失蹤者是張志新(化名)和其女友劉穎忧吟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒸矛,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瀑罗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年胸嘴,在試婚紗的時候發(fā)現(xiàn)自己被綠了雏掠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡劣像,死狀恐怖乡话,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情耳奕,我是刑警寧澤绑青,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站屋群,受9級特大地震影響闸婴,放射性物質發(fā)生泄漏。R本人自食惡果不足惜芍躏,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一邪乍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦庇楞、人聲如沸榜配。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛋褥。三九已至,卻和暖如春睛驳,著一層夾襖步出監(jiān)牢的瞬間烙心,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工柏靶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弃理,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓屎蜓,卻偏偏與公主長得像痘昌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子炬转,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容