2016-04-15 141 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 –