2019-05-21 08:22:22 -07:00
## Install Gaia
This guide will explain how to install the `gaiad` and `gaiacli` entrypoints onto your system. With these installed on a server, you can participate in the mainnet as either a [Full Node ](./join-mainnet.md ) or a [Validator ](./validators/validator-setup.md ).
### Install Go
Install `go` by following the [official docs ](https://golang.org/doc/install ). Remember to set your `$GOPATH` and `$PATH` environment variables, for example:
```bash
mkdir -p $HOME/go/bin
echo "export GOPATH=$HOME/go" >> ~/.bash_profile
echo "export PATH=\$PATH:\$GOPATH/bin" >> ~/.bash_profile
source ~/.bash_profile
```
::: tip
**Go 1.12+** is required for the Cosmos SDK.
:::
### Install the binaries
Next, let's install the latest version of Gaia. Make sure you `git checkout` the correct [released version ](https://github.com/cosmos/gaia/releases ).
::: warning
For the mainnet, make sure your version is greater than `v0.33.0`
:::
::: warning
Older releases up to 0.34.x are available from the [Cosmos SDK releases page ](https://github.com/cosmos/cosmos-sdk/releases ).
:::
```bash
mkdir -p $GOPATH/src/github.com/cosmos
cd $GOPATH/src/github.com/cosmos
git clone -b < latest-release-tag > https://github.com/cosmos/gaia
cd gaia & & make install
```
> *NOTE*: If you have issues at this step, please check that you have the latest stable version of GO installed.
That will install the `gaiad` and `gaiacli` binaries. Verify that everything is OK:
```bash
$ gaiad version --long
$ gaiacli version --long
```
`gaiacli` for instance should output something similar to:
```
cosmos-sdk: 0.33.0
git commit: 7b4104aced52aa5b59a96c28b5ebeea7877fc4f0
build tags: netgo ledger
go version go1.12 linux/amd64
```
##### Build Tags
Build tags indicate special features that have been enabled in the binary.
| Build Tag | Description |
| --------- | ----------------------------------------------- |
| netgo | Name resolution will use pure Go code |
| ledger | Ledger devices are supported (hardware wallets) |
### Install binary distribution via snap (Linux only)
**Do not use snap at this time to install the binaries for production until we have a reproducible binary system.**
2019-06-05 11:13:12 -07:00
### Developer Workflow
To test any changes made in the SDK or Tendermint, a `replace` clause needs to be added to `go.mod` providing the correct import path.
- Make appropriate changes
- Add `replace github.com/cosmos/cosmos-sdk => /path/to/clone/cosmos-sdk` to `go.mod`
- Run `make clean install` or `make clean build`
- Test changes
2019-05-21 08:22:22 -07:00
### Next
Now you can [join the mainnet ](./join-mainnet.md ), [the public testnet ](./join-testnet.md ) or [create you own testnet ](./deploy-testnet.md )