# Building the Software

## About

Jito-Solana is open source and completely permissionless. Currently, the client doesn't have a build pipeline for downloading images directly. We are working on this, but in the meantime please follow the commands below.

### Computer Setup

One must install the rust compiler and a few related packages before building jito-solana.

```bash
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
rustup component add rustfmt
rustup update
sudo apt-get update
sudo apt-get install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler
```

### Versions

**Mainnet or Testnet:**

```
export TAG=v1.XX.XX-jito
```

Above is the generic syntax -- would be `export TAG=v1.16.17-jito` for a specific version.  Please see the Github release page for current releases and notes ([link](https://github.com/jito-foundation/jito-solana/releases)).

### Building

Make sure that you've run the `export TAG=` section above.

The following will build jito-solana from source and install it at the path: `~/.local/share/solana/install/releases/$TAG/bin/solana-validator`

#### Initial Setup

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>git clone https://github.com/jito-foundation/jito-solana.git --recurse-submodules
</strong>cd jito-solana
git checkout tags/$TAG
git submodule update --init --recursive

CI_COMMIT=$(git rev-parse HEAD) scripts/cargo-install-all.sh --validator-only ~/.local/share/solana/install/releases/"$TAG"
</code></pre>

#### Upgrading

{% code overflow="wrap" %}

```
cd jito-solana
git pull
git checkout tags/$TAG
git submodule update --init --recursive
CI_COMMIT=$(git rev-parse HEAD) scripts/cargo-install-all.sh --validator-only ~/.local/share/solana/install/releases/"$TAG"
```

{% endcode %}

### Local Testing

Run a local validator for testing without any configuration. RPC is available on `http://localhost:8899`.

```bash
nohup ./start > faucet.log &
nohup ./bootstrap > validator.log &

# stop local validator with:
# pkill solana-faucet && pkill -f 'bash ./.*bootstrap'
```
