# Install from Source

This page provides instructions on installing Tendermint from source.
To download pre-built binaries, see the [Download page](/download).

## Install Go

Make sure you have [installed Go](https://golang.org/doc/install) and set the `GOPATH`.

## Install Tendermint

You should be able to install the latest with a simple 

```
go get github.com/tendermint/tendermint/cmd/tendermint
```

Run `tendermint --help` for more.

If the installation failed, a dependency may been updated and become incompatible with the latest Tendermint master branch.
We solve this using the `glide` tool for dependency management.

Fist, install `glide`:

```
go get github.com/Masterminds/glide
```

Now we can fetch the correct versions of each dependency by running:

```
cd $GOPATH/src/github.com/tendermint/tendermint
glide install
go install ./cmd/tendermint
```

Note that even though `go get` originally failed, 
the repository was still cloned to the correct location in the `$GOPATH`.

The latest Tendermint Core version is now installed. 

### Reinstall

If you already have Tendermint installed, and you make updates,
simply 

```
cd $GOPATH/src/github.com/tendermint/tendermint
go install ./cmd/tendermint
```

To upgrade, there are a few options:

- set a new `$GOPATH` and run `go get github.com/tendermint/tendermint/cmd/tendermint`. This makes a fresh copy of everything for the new version. 
- run `go get -u github.com/tendermint/tendermint/cmd/tendermint`, where the `-u` fetches the latest updates for the repository and its dependencies
- fetch and checkout the latest master branch in `$GOPATH/src/github.com/tendermint/tendermint`, and then run `glide install && go install ./cmd/tendermint` as above.

Note the first two options should usually work, but may fail.
If they do, use `glide`, as above: 

```
cd $GOPATH/src/github.com/tendermint/tendermint
glide install
go install ./cmd/tendermint
```

Since the third option just uses `glide` right away, it should always work.


### Troubleshooting

If `go get` failing bothers you, fetch the code using `git`:

```
mkdir -p $GOPATH/src/github.com/tendermint
git clone https://github.com/tendermint/tendermint $GOPATH/src/github.com/tendermint/tendermint
cd $GOPATH/src/github.com/tendermint/tendermint
glide install
go install ./cmd/tendermint
```

### Run

To start a one-node blockchain with a simple in-process application: 

```
tendermint init
tendermint node --proxy_app=dummy
```

See the 
[App Development](/docs/guides/app-development)
guide for more details on building applications,
and the 
[Using Tendermint](/docs/guides/using-tendermint) 
guide for more details about using the `tendermint` program.

## Next Step

Learn how to [create your first ABCI app](/docs/getting-started/first-abci-app).