.. _installing:

.. toctree::

.. _installingVPP:

Installing VPP from Packages
==============================

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.

.. toctree::

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

.. toctree::

   packages

Installing VPP Binaries
----------------------------------

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

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
