# Installing from Pip

GRR is now available from pip. If you’re looking for an install that sets up system daemons and everything ready for production, use the deb package via the quickstart instuctions. Use these instructions to set up a dev environment or upgrade a server to a newer version from github.

The packages are:

- Server: grr-response-server

- Client: grr-response-client

- Client templates and components: grr-response-templates

To install the version released on pypi (the deb and rpm packaging stuff is only needed for the server to repack the client installers). Note that you must upgrade pip and run in a virutalenv for the install to work:

    sudo apt-get install -y \
    debhelper \
    dpkg-dev \
    libssl-dev \
    prelink \
    python-dev \
    python-pip \
    rpm

    sudo pip install --upgrade pip
    sudo pip install virtualenv

    virtualenv GRR_ENV
    source GRR_ENV/bin/activate
    pip install grr-response-server
    pip install --no-cache-dir -f https://storage.googleapis.com/releases.grr-response.com/index.html grr-response-templates

    # Then run initialize as normal
    grr_config_updater initialize

Installing the client for development is just as easy thanks to pre-built wheels hosted on pypi for OS X and Windows:

    virtualenv GRR_ENV
    source GRR_ENV/bin/activate
    pip install --pre grr-response-client

## Installing GRR server for dev, i.e. tracking HEAD

Installing from pip is great for development because you can have multiple versions installed on the same machine without having them conflict with each other. When you use pip "--editable" mode your installed version will be linked to your src tree so you can git clone from github, install, edit, and have any changes reflected immediately in your installed server.

Even if you’re not doing development you may want to upgrade your GRR server to use a commit from github to grab a bugfix or a new feature that isn’t in a release yet. Once you have installed the deb (note it needs to be 3.1.0-rc2 or newer):

    sudo apt-get install -y \
      debhelper \
      default-jre \
      dpkg-dev \
      git \
      libffi-dev \
      libssl-dev \
      prelink \
      python-dev \
      python-pip \
      rpm \
      wget \
      zip

    cd /usr/local && \
      wget --quiet "https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip" && \
      unzip -q protoc-3.3.0-linux-x86_64.zip -x readme.txt && \
      rm protoc-3.3.0-linux-x86_64.zip

    sudo pip install --upgrade pip
    sudo pip install virtualenv

    git clone https://github.com/google/grr.git
    virtualenv GRR_NEW
    source GRR_NEW/bin/activate
    # This sets up NodeJS inside the virtualenv.
    # NodeJS is needed to compile AdminUI JS/CSS files.
    pip install nodeenv
    nodeenv -p --prebuilt
    source GRR_NEW/bin/activate
    # This installs GRR.
    cd grr/
    pip install --editable .
    pip install --editable grr/config/grr-response-client/
    pip install --editable grr/config/grr-response-server
    pip install --no-cache-dir -f https://storage.googleapis.com/releases.grr-response.com/index.html grr-response-templates
    pip install --editable api_client/python
    pip install --editable grr/config/grr-response-test

Then edit /etc/default/grr-server and set:

    GRR_PREFIX=/path/to/GRR_NEW