# Install

Install the parity CLI on Linux, macOS or Windows, and verify the download.

`parity` is a single static binary for Linux and macOS (amd64 and arm64) and Windows.

```sh title="Terminal"
curl -fsSL https://parity.ninja/install | sh
parity --version
```

The script installs to `/usr/local/bin` when it can write there, otherwise to `~/.local/bin`. If that directory isn't on your `PATH`, it prints the line to add to your shell's startup file; if another `parity` comes first on your `PATH`, it says so. Rerun it to update.

| Variable | Default | |
|---|---|---|
| `PARITY_VERSION` | the latest release | Install another version, such as `v0.1.0`. |
| `PARITY_INSTALL_DIR` | `/usr/local/bin` or `~/.local/bin` | Install somewhere else. |

To read the script before running it, open https://parity.ninja/install.

## Verification [#verification]

The script refuses to install a binary whose SHA-256 doesn't match:

- The latest release is checked against checksums written into the script itself, which is served from parity.ninja, separately from the binaries.
- Any other version is checked against that release's `SHA256SUMS`, after checking the file's signature against the Parity release key in the script. This needs `openssl`.

## Manual download [#manual-download]

Each release is at `https://storage.googleapis.com/parity-releases/parity/<version>/`:

| File | |
|---|---|
| `parity_linux_amd64`, `parity_linux_arm64` | Linux |
| `parity_darwin_amd64`, `parity_darwin_arm64` | macOS |
| `parity_windows_amd64.exe`, `parity_windows_arm64.exe` | Windows |
| `SHA256SUMS` | SHA-256 of each binary |
| `SHA256SUMS.sig` | ECDSA P-256 signature of `SHA256SUMS` |

Download a binary with `SHA256SUMS` and `SHA256SUMS.sig`, then check both:

```sh title="Terminal"
curl -fsSLO https://parity.ninja/parity-release.pub
openssl dgst -sha256 -verify parity-release.pub -signature SHA256SUMS.sig SHA256SUMS &&
  sha256sum --ignore-missing -c SHA256SUMS &&     # macOS: shasum -a 256 --ignore-missing -c SHA256SUMS
  chmod +x parity_linux_amd64 &&
  sudo mv parity_linux_amd64 /usr/local/bin/parity
```

On macOS, a binary downloaded with a browser is quarantined; clear it with `xattr -d com.apple.quarantine parity_darwin_arm64`. Downloads with curl aren't affected.

With cosign (bash or zsh), skip the transparency log, which these signatures aren't in: `cosign verify-blob --insecure-ignore-tlog=true --key parity-release.pub --signature <(base64 < SHA256SUMS.sig) SHA256SUMS`.
