2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00

218 lines
7.3 KiB
ReStructuredText
Raw Normal View History

..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
Convention for heading levels in Open vSwitch documentation:
======= Heading 0 (reserved for the title in a document)
------- Heading 1
~~~~~~~ Heading 2
+++++++ Heading 3
''''''' Heading 4
Avoid deeper levels because they do not render well.
========================================
RHEL 5.6, 6.x Packaging for Open vSwitch
========================================
This document describes how to build and install Open vSwitch on a Red Hat
Enterprise Linux (RHEL) host. If you want to install Open vSwitch on a generic
Linux host, refer to :doc:`general` instead.
We have tested these instructions with RHEL 5.6 and RHEL 6.0.
For RHEL 7.x (or derivatives, such as CentOS 7.x), you should follow the
instructions in the :doc:`fedora`. The Fedora spec files are used for RHEL
7.x.
.. _rhel-prerequisites:
Prerequisites
-------------
You may build from an Open vSwitch distribution tarball or from an Open vSwitch
Git tree.
The default RPM build directory, ``_topdir``, has five directories in the
top-level.
BUILD/
where the software is unpacked and built
RPMS/
where the newly created binary package files are written
SOURCES/
contains the original sources, patches, and icon files
SPECS/
contains the spec files for each package to be built
SRPMS/
where the newly created source package files are written
Before you begin, note the RPM sources directory on your version of RHEL. The
command ``rpmbuild --showrc`` will show the configuration for each of those
directories. Alternatively, the command ``rpm --eval '%{_topdir}'`` shows the
current configuration for the top level directory and the command ``rpm --eval
'%{_sourcedir}'`` does the same for the sources directory. On RHEL 5, the
default RPM ``_topdir`` is ``/usr/src/redhat`` and the default RPM sources
directory is ``/usr/src/redhat/SOURCES``. On RHEL 6, the default ``_topdir`` is
``$HOME/rpmbuild`` and the default RPM sources directory is
``$HOME/rpmbuild/SOURCES``.
Build Requirements
------------------
You will need to install all required packages to build the RPMs.
The command below will install RPM tools and generic build dependencies::
$ yum install @'Development Tools' rpm-build yum-utils
Then it is necessary to install Open vSwitch specific build dependencies.
The dependencies are listed in the SPEC file, but first it is necessary
to replace the VERSION tag to be a valid SPEC.
The command below will create a temporary SPEC file::
$ sed -e 's/@VERSION@/0.0.1/' rhel/openvswitch.spec.in > /tmp/ovs.spec
And to install specific dependencies, use yum-builddep tool::
$ yum-builddep /tmp/ovs.spec
Once that is completed, remove the file ``/tmp/ovs.spec``.
If python3-sphinx package is not available in your version of RHEL, you can
install it via pip with 'pip install sphinx'.
Open vSwitch requires python 3.7 or newer which is not available in older
distributions. For those, one option is to build and install required version
from source.
.. _rhel-bootstrapping:
Bootstrapping and Configuring
-----------------------------
If you are building from a distribution tarball, skip to :ref:`rhel-building`.
If not, you must be building from an Open vSwitch Git tree. Determine what
version of Autoconf is installed (e.g. run ``autoconf --version``). If it is
not at least version 2.63, then you must upgrade or use another machine to
build the packages.
Assuming all requirements have been met, build the tarball by running::
$ ./boot.sh
$ ./configure
$ make dist
You must run this on a machine that has the tools listed in
:ref:`general-build-reqs` as prerequisites for building from a Git tree.
Afterward, proceed with the rest of the instructions using the distribution
tarball.
Now you have a distribution tarball, named something like
``openvswitch-x.y.z.tar.gz``. Copy this file into the RPM sources directory,
e.g.::
$ cp openvswitch-x.y.z.tar.gz $HOME/rpmbuild/SOURCES
Broken ``build`` symlink
~~~~~~~~~~~~~~~~~~~~~~~~
Some versions of the RHEL 6 kernel-devel package contain a broken ``build``
symlink. If you are using such a version, you must fix the problem before
continuing.
To find out whether you are affected, run::
$ cd /lib/modules/<version>
$ ls -l build/
where ``<version>`` is the version number of the RHEL 6 kernel.
.. note::
The trailing slash in the final command is important. Be sure to include
it.
If the ``ls`` command produces a directory listing, your kernel-devel package
is OK. If it produces a ``No such file or directory`` error, your kernel-devel
package is buggy.
If your kernel-devel package is buggy, then you can fix it with::
$ cd /lib/modules/<version>
$ rm build
$ ln -s /usr/src/kernels/<target> build
where ``<target>`` is the name of an existing directory under
``/usr/src/kernels``, whose name should be similar to ``<version>`` but may
contain some extra parts. Once you have done this, verify the fix with the
same procedure you used above to check for the problem.
.. _rhel-building:
Building
--------
You should have a distribution tarball named something like
openvswitch-x.y.z.tar.gz. Copy this file into the RPM sources directory::
$ cp openvswitch-x.y.z.tar.gz $HOME/rpmbuild/SOURCES
Make another copy of the distribution tarball in a temporary directory. Then
unpack the tarball and ``cd`` into its root::
$ tar xzf openvswitch-x.y.z.tar.gz
$ cd openvswitch-x.y.z
Userspace
~~~~~~~~~
To build Open vSwitch userspace, run::
$ rpmbuild -bb rhel/openvswitch.spec
This produces two RPMs: "openvswitch" and "openvswitch-debuginfo".
The above command automatically runs the Open vSwitch unit tests. To disable
the unit tests, run::
$ rpmbuild -bb --without check rhel/openvswitch.spec
.. note::
If the build fails with ``configure: error: source dir
/lib/modules/2.6.32-279.el6.x86_64/build doesn't exist`` or similar, then
the kernel-devel package is missing or buggy.
.. _rhel-script-integrations:
Red Hat Network Scripts Integration
-----------------------------------
A RHEL host has default firewall rules that prevent any Open vSwitch tunnel
traffic from passing through. If a user configures Open vSwitch tunnels like
Geneve, GRE, VXLAN, etc., they will either have to manually add iptables
firewall rules to allow the tunnel traffic or add it through a startup script
Refer to the "enable-protocol" command in the ovs-ctl(8) manpage for more
information.
In addition, simple integration with Red Hat network scripts has been
implemented. Refer to `README.RHEL.rst`__ in the source tree or
/usr/share/doc/openvswitch/README.RHEL.rst in the installed openvswitch package
for details.
Documentation: Updates for rename of primary development branch as main. Recently OVS adopted a policy of using the inclusive naming word list v1 [1, 2]. In keeping with this policy rename the primary development branch from 'master' to 'main'. This patch does not actually make that change, but rather updates references to the branch in documentation in the source tree. It is intended to be applied at (approximately) the same time that the change is made. OVS is currently hosted on GitHub. We can expect the following behaviour after the rename: 1. GitHub pull requests against are renamed branch are automatically re-homed on new branch 2. GitHub Issues do not seem to be affected - at least the test issue I created had no association with a branch 3. URLs accessed via the GitHub web UI are automatically renamed (so long as a new branch called master is not created). 4. Using the git cli command, fetch will fetch the new branch (main), and fetch -p will remove (prune) the old branch (master) [1] df5e5cf4318a ("Documentation: Add section on inclusive language.") [2] https://inclusivenaming.org/word-lists/ Signed-off-by: Simon Horman <horms@ovn.org> Acked-by: Eelco Chaudron <echaudro@redhat.com> Acked-by: Aaron Conole <aconole@redhat.com> Acked-by: Ilya Maximets <i.maximets@ovn.org> --- Notes: * Now is the time to raise any concerns regarding this patch. It is planned to implement this change next week. * If you have an automation that fetches the master branch then the suggested action is: 1. Before the branch rename occurs: update the automation to pull main an fall back to pulling master if that fails 2. After the rename occurs: Update the automation to only fetch main * After the change it may be necessary to update your local git configuration for checked out branches. For example: # Fetch origin: new remote main branch; remote master branch is deleted git fetch -tp origin # Rename local branch git branch -m master main # Update local main branch to use remote main branch as it's upstream git branch --set-upstream-to=origin/main main * As a follow-up, after the rename, I plan to post a patch which removes references to master in CI jobs
2024-03-20 17:36:36 +00:00
__ https://github.com/openvswitch/ovs/blob/main/rhel/README.RHEL.rst
Reporting Bugs
--------------
Report problems to bugs@openvswitch.org.