2016-04-15 172 views
10

如果我有一個編譯好的Golang程序,我想要安裝這樣的程序,以便我可以在計算機上的任何位置使用bash命令運行它,那麼我該怎麼做?例如,在的NodeJSGolang相當於npm install -g

npm install -g express 

安裝表達,這樣我可以運行命令

express myapp 

,並表示會生成一個名爲「MYAPP」節點應用在任何我的當前目錄的文件目錄。是否有等同的命令?我相信現在使用「go install」命令,您必須在包含可執行文件的目錄中才能運行它

在此先感謝!

+0

您將GOPATH/bin添加到PATH中? (或者你正在尋找某種[去包管理器](https://github.com/golang/go/wiki/PackageManagementTools)?) – JimB

回答

7

據我所知,沒有直接相當於npm install -g。最接近的等值不是go install,而是go get。從幫助頁面(go help get):

用法:go get [-d] [-f] [-fix] [-insecure] [-t] [-u] [build flags] [packages]

獲取下載並安裝由進口路徑, 與它們的依賴一起命名的包。

默認情況下,go get安裝二進制文件$GOPATH/bin,所以使這些二進制文件來自世界各地調用最簡單的方法是到該目錄添加到您的$PATH

對於這一點,把下面一行到您的.bashrc(或.zshrc,取決於哪個殼您正在使用):

export PATH="$PATH:$GOPATH/bin" 

或者,你也可以複製或可執行文件鏈接到/usr/local/bin

ln -s $GOPATH/bin/some-binary /usr/local/bin/some-binary 
+0

當時這是正確的(並且非常感謝你的幫助),但值得注意的是,任何遇到此問題的人都會發現,現在有一個'go install',用於構建二進制文件,它在你的'$ GOPATH/bin'中 – Ryan

2

Go中最接近的類似物是go get。默認情況下,它會從提供的存儲庫URL中獲取Go包,並且需要在shell中設置一個$GOPATH變量,以便Go知道存儲包的位置(以及隨後在編譯代碼時根據go get -ted包)。

示例語法:

$ go get github.com/user/repo 

通過npm-g標誌提供的行爲是默認值,並且使用go get安裝的軟件包爲通常可得到的全局。

有關該命令的更多信息,請參閱go get --help

正如@helmbert所述,如果您要安裝獨立軟件包,將$GOPATH添加到您的$PATH中非常有用。

+2

「go get help」:D –