# Installation
## 1. Prerequisites
Install the following packages (depending on your distribution):
### OS dependencies
This software needs Python, libusb, and libudev along with development files.
You can install them on these distributions as follows:
##### Debian
$ apt-get install python3-pip python3-dev python3-tk libusb-1.0-0-dev libudev-dev
##### RedHat
$ yum install python3-pip python3-devel python3-tk libusb-devel libudev-devel \
gcc redhat-rpm-config
##### Fedora
$ dnf install python3-pip python3-devel python3-tkinter libusb-devel libudev-devel \
gcc redhat-rpm-config
##### OpenSUSE
$ zypper install python-pip python-devel python-tk libusb-1_0-devel libudev-devel
If you are using python3 or your system `pip` command points to `pip3.x`
(`/etc/alternatives/pip -> /usr/bin/pip3.6`) you will need to install these
dependencies instead:
$ zypper install python3-pip python3-devel python3-tk libusb-1_0-devel libudev-devel
##### macOS
There are many different options to install python environment on macOS ([official](https://www.python.org/downloads/mac-osx/), [anaconda ](https://conda.io/docs/user-guide/install/macos.html ), ..). Most importantly you need `libusb` . Probably the easiest way is via [homebrew ](https://brew.sh/ )
$ brew install libusb
### GPG
If you intend to use GPG make sure you have GPG installed and up to date. This software requires a GPG version >= 2.1.11.
You can verify your installed version by running:
```
$ gpg2 --version | head -n1
gpg (GnuPG) 2.1.15
```
* Follow this installation guide for [Debian ](https://gist.github.com/vt0r/a2f8c0bcb1400131ff51 )
* Install GPG for [macOS ](https://sourceforge.net/p/gpgosx/docu/Download/ )
* Install packages for Ubuntu 16.04 [here ](https://launchpad.net/ubuntu/+source/gnupg2 )
* Install packages for Linux Mint 18 [here ](https://community.linuxmint.com/software/view/gnupg2 )
# 2. Install the TREZOR agent
1. Make sure you are running the latest firmware version on your Trezor:
* [TREZOR firmware releases ](https://wallet.trezor.io/data/firmware/releases.json ): `1.4.2+`
2. Make sure that your `udev` rules are configured [correctly ](https://doc.satoshilabs.com/trezor-user/settingupchromeonlinux.html#manual-configuration-of-udev-rules ).
3. Then, install the latest [trezor_agent ](https://pypi.python.org/pypi/trezor_agent ) package:
```
$ pip3 install Cython
$ pip3 install trezor_agent
```
Or, directly from the latest source code:
```
$ git clone https://github.com/romanz/trezor-agent
$ pip3 install --user -e trezor-agent/agents/trezor
```
Or, through Homebrew on macOS:
```
$ brew install trezor-agent
```
# 3. Install the KeepKey agent
1. Make sure you are running the latest firmware version on your KeepKey:
* [KeepKey firmware releases ](https://github.com/keepkey/keepkey-firmware/releases ): `3.0.17+`
2. Make sure that your `udev` rules are configured [correctly ](https://support.keepkey.com/support/solutions/articles/6000037796-keepkey-wallet-is-not-being-recognized-by-linux ).
Then, install the latest [keepkey_agent ](https://pypi.python.org/pypi/keepkey_agent ) package:
```
$ pip3 install keepkey_agent
```
Or, directly from the latest source code:
```
$ git clone https://github.com/romanz/trezor-agent
$ pip3 install --user -e trezor-agent/agents/keepkey
```
# 4. Install the Ledger Nano S agent
1. Make sure you are running the latest firmware version on your Ledger Nano S:
* [Ledger Nano S firmware releases ](https://github.com/LedgerHQ/blue-app-ssh-agent ): `0.0.3+` (install [SSH/PGP Agent ](https://www.ledgerwallet.com/images/apps/chrome-mngr-apps.png ) app)
2. Make sure that your `udev` rules are configured [correctly ](https://ledger.zendesk.com/hc/en-us/articles/115005165269-What-if-Ledger-Wallet-is-not-recognized-on-Linux- ).
3. Then, install the latest [ledger_agent ](https://pypi.python.org/pypi/ledger_agent ) package:
```
$ pip3 install ledger_agent
```
Or, directly from the latest source code:
```
$ git clone https://github.com/romanz/trezor-agent
$ pip3 install --user -e trezor-agent/agents/ledger
```
# 5. Installation Troubleshooting
If there is an import problem with the installed `protobuf` package,
see [this issue ](https://github.com/romanz/trezor-agent/issues/28 ) for fixing it.
If you can't find the command-line utilities (after running `pip install --user` ),
please make sure that `~/.local/bin` is on your `PATH` variable
(see a [relevant ](https://github.com/pypa/pip/issues/3813 ) issue).
If you can't find command-line utilities and are on macOS/OSX check `~/Library/Python/2.7/bin` and add to `PATH` if necessary (see a [relevant ](https://github.com/romanz/trezor-agent/issues/155 ) issue).