.. _installing:

.. toctree::

.. _installingVPP:

Downloading and Installing VPP
==============================

If you want to use VPP it can be convenient to install the binaries from
existing packages. This guide describes how to pull, install and run the VPP packages.

This section provides directions on how to Install VPP binaries on Ubuntu, Centos,
and openSUSE platforms.

FD.io VPP is installed using Package Cloud. For a complete set of
instructions on how to install VPP with package cloud please refer
to `Package Cloud <https://packagecloud.io/fdio/release>`_.


Installing on Ubuntu
---------------------------------

The following are instructions on how to install VPP on Ubuntu.

.. toctree::

   ubuntu

Installing on Centos
-------------------------------

The following are instructions on how to install VPP on Centos.

.. toctree::

   centos

Installing on openSUSE
--------------------------------------

The following are instructions on how to install VPP on openSUSE.

.. toctree::

   opensuse

Package Descriptions
----------------------------------

The following is a brief description of the packages to be installed with VPP.

.. toctree::

   packages
