# 9.7使用go install安装自定义包

go install是Go中自动包安装工具：如需要将包安装到本地它会从远端仓库下载包：检出，编译，安装一气呵成。

在包安装前的先决条件是要自动处理包自身依赖关系的安装。被依赖的包也会安装到子目录下，但是没有文档和示例：可以到网上浏览。

被安装包的列表可以在$GORROT/goinstall.log找到。

go install使用了GOPATH变量(参见2.2章节)。

远端包(参见9.5章节)：

假设我们要安装一个有趣的包tideland(它包含了许多帮助示例，参见http://code.google.com/p/tideland-cgl)。

因为我们需要创建目录在Go安装目录下，所以我们需要使用root或者su的身份执行命令。

确保Go环境变量已经设置在root用户下的./bashrc文件中。

使用命令安装：go install tideland-cgl.googlecode.com/hg

可执行文件hg.a将被放到$GOROOT/pkg/linux_amd64/tideland-cgl.googlecode.com目录下，源码文件被放置在$GOROOT/src/tideland-cgl.googlecode.com/hg目录下，同样有个hg.a放置在_obj的子目录下。

现在就可以在go代码中使用这个包中的功能了，例如使用报名cgl导入：
	
	import cgl "tideland-cgl.googlecode.com/hg"
	
从Go1起go install安装Google Code的导入路径形式是："code.google.com/p/tideland-cgl"

升级到新的版本：

更新到新版本的Go之后本地安装包的二进制文件将全被删除。当调用install-a工具将通过读取$GOROOT/goinstall.log重新安装以前的安装包。如果你想更新，重编译，重安装所有的go安装包可以使用：go install -a -u -clean 或者 go install -a -u -nuke

go的版本发布的很频繁，所以需要注意发布版本和包的兼容性。go1之后都是自己编译自己了。

go install同样可以使用go install编译链接并安装本地自己的包：参见9.8.2章节。

更多信息可以在http://golang.org/cmd/go和http://golang.org/cmd/goinstall找到。