How to install golang 3rd-party projects from download sources?

I'm trying to install mgo which is a mongo-driver written in golang.

The standard command:

go get launchpad.net/mgo

But it failed because of some cert issues.

So I manually download the sources of mgo to local E:\mgo, but I don't know to how install it.

The file tree:

├─.bzr
│  ├─branch
│  │  └─lock
│  ├─branch-lock
│  ├─checkout
│  │  └─lock
│  └─repository
│      ├─indices
│      ├─lock
│      ├─obsolete_packs
│      ├─packs
│      └─upload
├─bson
└─testdb

I tried:

cd mgo
go install

It reports:

auth.go:34:2: import "launchpad.net/mgo/bson": cannot find package

But if I try to install bson first:

cd bson
go install

It reports another error:

go install: no install location for _/E_/mgo/bson

So, what's the correct command to install it?


Finally I successfully install the mgo project. I think it will be helpful for beginners, so I answer it here.

First, we need GOPATH

Define a env variable GOPATH, which is your project root directory, and it should have a sub dir src.

For me, I define it to E:\WORKSPACE_GO\mgo, then create a sub dir src

Copy the project to the src

Then copy the mgo project to %GOPATH%/mgo, but we must be careful about the directory structure. It should be exactly the same as the package defined in sources.

For mgo, it's package is launchpad.net/mgo, so the structure should be:

E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo

go install

At last, go install them:

cd E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo\bson
go install

cd ..
go install

If there is no error input, it should be successfully installed.


Set GOPATH. Move code under $GOPATH. Then

cd $GOPATH/src/github.com/user/package
go get .

Explanation:

go build .    # produces binary in current dir 
go install .  # produces binary in $GOPATH/bin 
go get .      # same as 'install' but resolves import deps 

More on that


You will have to put it into your GOPATH/src directory, preserving the import path (the one you passed to go install).

The fallback GOPATH is your go install directory. So you can clone the mgo repository to go/src/pkg/launchpad.net/mgo.

Alternatively, when you set up a project directory/environment for your project that depends on mgo, and set the GOPATH environment variable to that FOLDER, then you can clone the mgo repository to FOLDER/src/launchpad.net/mgo/.

You can then use the mgo package in your project as expected:

import "launchpad.net/mgo"