zoneminder/docs/installationguide/redhat.rst

237 lines
12 KiB
ReStructuredText
Raw Normal View History

Redhat
======
.. contents::
These instructions apply to all Redhat distros and their clones, including but not limited to: Fedora, RHEL, CentOS, Scientific Linux, and others. While the installation instructions are the same for each distro, the reason why one might use one distro over the other is different. A short description follows, which is intended to help you chose what distro best fits your needs.
2016-02-29 02:54:21 +08:00
Background: RHEL, CentOS, and Clones
------------------------------------
These distributions are classified as enterprise operating systems and have a long operating lifetime of many years. By design, they will not have the latest and greatest versions of any package. Instead, stable packages are the emphasis.
2017-08-11 20:52:25 +08:00
Replacing any core package in these distributions with a newer package from a third party is expressly verboten. The ZoneMinder development team will not do this, and neither should you. If you have the perception that you've got to have a newer version of php, mysql, gnome, apache, etc. then, rather than upgrade these packages, you should instead consider using a different distribution such as Fedora.
The ZoneMinder team will not provide support for systems which have had any core package replaced with a package from a third party.
Background: Fedora
------------------------------------
2016-03-25 20:54:37 +08:00
One can think of Fedora as RHEL or CentOS Beta. This is, in fact, what it is. Fedora is primarily geared towards development and testing of newer, sometimes bleeding edge, packages. The ZoneMinder team uses this distro to determine the interoperability of ZoneMinder with the latest and greatest versions of packages like mysql, apache, systemd, and others. If a problem is detected, it will be addressed long before it makes it way into RHEL.
Fedora has a short life-cycle of just 6 months. However, Fedora, and consequently ZoneMinder, is available on armv7 architecture. Rejoice, Raspberry Pi users!
2016-03-15 20:30:31 +08:00
If you desire newer packages than what is available in RHEL or CentOS, you should consider using Fedora.
2017-08-11 09:55:22 +08:00
How To Avoid Known Installation Problems
----------------------------------------
2017-08-11 09:55:22 +08:00
The following notes are based on real problems which have occurred by those who came before you:
2016-02-29 02:54:21 +08:00
2017-08-11 09:55:22 +08:00
- Zmrepo assumes you have installed the underlying distribution **using the official installation media for that distro**. Third party "Spins" may not work correctly.
2016-02-29 02:54:21 +08:00
- ZoneMinder is intended to be installed in an environment dedicated to ZoneMinder. While ZoneMinder will play well with many applications, some invariably will not. Asterisk is one such example.
2016-02-29 02:54:21 +08:00
2017-08-11 09:55:22 +08:00
- Be advised that you need to start with a clean system before installing ZoneMinder.
2016-02-29 02:54:21 +08:00
2017-08-11 20:49:59 +08:00
- If you have previously installed ZoneMinder from-source, then your system is **NOT** clean. You must manually search for and delete all ZoneMinder related files first (look under /usr/local). Issuing a "make uninstall" helps, but it will not do this for you correctly. You **WILL** have problems if you ignore this step.
2016-02-29 02:54:21 +08:00
2017-08-11 20:49:59 +08:00
- Unlike Debian/Ubuntu distros, it is not necessary, and not recommended, to install a LAMP stack ahead of time.
2016-02-29 02:54:21 +08:00
2017-08-11 09:55:22 +08:00
- Disable any other third party repos and uninstall any of ZoneMinder's third party dependencies, which might already be on the system, especially ffmpeg and vlc. Attempting to install dependencies yourself often causes problems.
2016-02-29 02:54:21 +08:00
2017-08-11 20:55:29 +08:00
- Each ZoneMinder rpm includes a README file under /usr/share/doc. You must follow all the steps in this README file, precisely, each and every time ZoneMinder is installed or upgraded. **Failure to do so is guaranteed to result in a non-functional system.**
2017-08-11 09:55:22 +08:00
How to Install ZoneMinder
-------------------------
2017-08-11 20:49:59 +08:00
These instructions apply to all redhat distros and compatible clones, except for RHEL/CentOS 6.
2017-08-11 09:55:22 +08:00
2017-08-11 20:49:59 +08:00
ZoneMinder releases are now being hosted at RPM Fusion. New users should navigate the `RPM Fusion site <https://rpmfusion.org>`_ then follow the instructions to enable that repo. RHEL/CentOS users must also navaigate to the `EPEL Site <https://fedoraproject.org/wiki/EPEL>`_ and enable that repo as well. Once enabled, install ZoneMinder from the commandline:
2017-08-11 09:55:22 +08:00
::
sudo dnf install zoneminder
2017-08-11 20:49:59 +08:00
Note that RHEL/CentOS 7 users should use yum instead of dnf.
2017-08-11 09:55:22 +08:00
Once ZoneMinder has been installed, it is critically important that you read the README file under /usr/share/doc/zoneminder. ZoneMinder will not run without completing the steps outlined in the README.
How to Install ZoneMinder on RHEL/CentOS 6
------------------------------------------
2017-08-11 09:57:26 +08:00
We continue to encounter build problems, caused by the age of this distro. It is unforuntate, but we can see the writing on the wall. We do not have a date set, but the end of the line for this distros is near.
2017-08-11 09:55:22 +08:00
Please be advised that we do not recommend any new ZoneMinder installations using CentOS 6. However, for the time being, ZoneMinder rpms will continue to be hosted at `zmrepo <https://www.zoneminder.com>`_.
2017-08-11 20:49:59 +08:00
How to Install Nightly Development Builds
-----------------------------------------
ZoneMinder development packages, which represent the most recent build from our master branch, are available from `zmrepo <https://www.zoneminder.com>`_.
The feedback we get from those who use these development packages is extremely helpful. However, please understand these packages are intended for testing the latest master branch only. They are not intended to be used on any production system. There will be new bugs, and new features may not be documented. This is bleeding edge, and there might be breakage. Please keep that in mind when using this repo. We know from our user forum that this can't be stated enough.
How to Change from Zmrepo to RPM Fusion
---------------------------------------
As mentioned above, the place to get the latest ZoneMinder release is now `RPM Fusion <https://rpmfusion.org>`_. If you are currently using ZoneMinder release packages from Zmrepo, then the following steps will change you over to RPM Fusion:
- Navigate to the `RPM Fusion site <https://rpmfusion.org>`_ and enable RPM Fusion on your system
- Now issue the following from the command line:
::
sudo dnf remove zmrepo
sudo dnf update
Note that RHEL/CentOS 7 users should use yum instead of dnf.
2017-08-11 21:44:02 +08:00
How to Build a Your Own ZoneMinder Package
------------------------------------------
2017-08-11 21:44:02 +08:00
If you are looking to do development or the available packages just don't suit you, then you can follow these steps to build your own ZoneMinder RPM.
2016-02-29 02:54:21 +08:00
Background
**********
2017-08-11 21:44:02 +08:00
The following method documents how to build ZoneMinder into an RPM package, for Fedora, Redhat, CentOS, and other compatible clones. This is exactly how the RPMS in zmrepo are built.
The method documented below was chosen because:
2016-02-29 02:54:21 +08:00
- All of ZoneMinder's dependencies are downloaded and installed automatically
2016-02-29 02:54:21 +08:00
- Cross platform capable. The build host does not have to be the same distro or release version as the target.
2016-02-29 02:54:21 +08:00
- Once your build environment is set up, few steps are required to run the build again in the future.
2016-02-29 02:54:21 +08:00
- Troubleshooting becomes easier if we are all building ZoneMinder the same way.
***IMPORTANT***
2017-08-11 21:44:02 +08:00
Certain commands in these instructions require root privileges while other commands do not. Pay close attention to this. If the instructions below state to issue a command without a “sudo” prefix, then you should *not* be root while issuing the command. Getting this incorrect will result in a failed build, or worse a broken system.
2016-02-29 02:54:21 +08:00
Set Up Your Environment
***********************
Before you begin, set up an rpmbuild environment by following `this guide <http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment>`_ by the CentOS developers.
2017-08-11 21:44:02 +08:00
In addition, make sure RPM Fusion is enabled as described in the previous section `How to Install ZoneMinder`_.
2017-08-11 21:44:02 +08:00
With RPM Fusion enabled, issue the following command:
2016-02-29 02:54:21 +08:00
::
2017-08-11 21:44:02 +08:00
sudo yum install mock-rpmfusion-free mock
2016-02-29 02:54:21 +08:00
Add your user account to the group mock:
2016-02-29 02:54:21 +08:00
::
sudo gpasswd -a {your account name} mock
Your build environment is now set up.
2016-02-29 02:54:21 +08:00
Build from SRPM
***************
2017-08-11 21:44:02 +08:00
To continue, you need a ZoneMinder SRPM. If you wish to rebuild a ZoneMinder release, then browse the `RPM Fusion site <http://zmrepo.zoneminder.com/>`_. If instead you wish to rebuild the latest package from our master branch then browse the `Zmrepo site<http://zmrepo.zoneminder.com/>`_.
2017-08-11 21:44:02 +08:00
For this example, I'll use one of the SRPMS from zmrepo:
2016-02-29 02:54:21 +08:00
::
wget -P ~/rpmbuild/SRPMS http://zmrepo.zoneminder.com/el/7/SRPMS/zoneminder-1.28.1-2.el7.centos.src.rpm
Now comes the fun part. To build ZoneMinder, issue the following command:
2016-02-29 02:54:21 +08:00
::
2017-08-11 21:44:02 +08:00
mock -r epel-7-x86_64-rpmfusion_free ~/rpmbuild/SRPMS/zoneminder-1.28.1-2.el7.centos.src.rpm
2016-02-29 02:54:21 +08:00
Want to build ZoneMinder for Fedora, instead of CentOS, from the same host? Once you download the Fedora SRPM, issue the following:
2016-02-29 02:54:21 +08:00
::
2017-08-11 21:44:02 +08:00
mock -r fedora-26-x86_64-rpmfusion_free ~/rpmbuild/SRPMS/zoneminder-1.28.1-1.fc21.src.rpm
2016-02-29 02:54:21 +08:00
2017-08-11 21:44:02 +08:00
Notice that the mock tool requires the following parameters:
2016-02-29 02:54:21 +08:00
::
2017-08-11 21:44:02 +08:00
mock -r MOCKCONFIG ZONEMINDER_SRPM
2016-02-29 02:54:21 +08:00
The list of available Mock config files are available here:
2016-02-29 02:54:21 +08:00
::
2017-08-11 21:44:02 +08:00
ls /etc/mock/*rpmfusion_free.cfg
2016-02-29 02:54:21 +08:00
You choose the config file based on the desired distro (e.g. el6, el7, f20, f21) and basearch (e.g. x86, x86_64, arhmhfp). Notice that, when specifying the Mock config as a commandline parameter, you should leave off the ".cfg" filename extension.
2016-02-29 02:54:21 +08:00
Installation
************
2017-08-11 21:44:02 +08:00
Once the build completes, you will be presented with a folder containing the RPMs that were built. Copy the newly built ZoneMinder RPMs to the desired system, enable RPM Fusion as described in `How to Install ZoneMinder`_, and then install the rpm by issuing the appropriate yum/dnf install command. Finish the installation by following the zoneminder setup instructions in the distro specific readme file, named README.{distroname}, which will be installed into the /usr/share/doc/zoneminder* folder.
2017-08-11 21:44:02 +08:00
Finally, you may want to consider editing the rpmfusion repo file under /etc/yum.repos.d and placing an “exclude=zoneminder*” line into the config file. This will prevent your system from overwriting your manually built RPM with the ZoneMinder RPM found in the repo.
2016-02-29 02:54:21 +08:00
How to Modify the Source Prior to Build
***************************************
Before attempting this part of the instructions, make sure and follow the previous instructions for building one of the unmodified SRPMS from zmrepo. Knowing this part works will assist in troubleshooting should something go wrong.
These instructions may vary depending on what exactly you want to do. The following example assumes you want to build a development snapshot from the master branch.
From the previous instructions, we downloaded a CentOS 7 ZoneMinder SRPM and placed it into ~/rpmbuild/SRPMS. For this example, install it onto your system:
2016-02-29 02:54:21 +08:00
::
2016-03-15 20:21:34 +08:00
rpm -ivh ~/rpmbuild/SRPMS/zoneminder-1.28.1-2.el7.centos.src.rpm
2016-02-29 02:54:21 +08:00
IMPORTANT: This operation must be done with your normal user account. Do *not* perform this command as root.
Make sure you have git installed:
2016-02-29 02:54:21 +08:00
::
sudo yum install git
Now clone the ZoneMinder git repository:
2016-02-29 02:54:21 +08:00
::
2016-03-15 20:24:15 +08:00
2016-03-15 20:21:34 +08:00
cd
2016-02-29 02:54:21 +08:00
git clone https://github.com/ZoneMinder/ZoneMinder
2016-03-15 20:21:34 +08:00
cd ZoneMinder
2016-02-29 02:54:21 +08:00
This will create a sub-folder called ZoneMinder, which will contain the latest development.
We want to turn this into a tarball, but first we need to figure out what to name it. Look here:
2016-02-29 02:54:21 +08:00
::
ls ~/rpmbuild/SOURCES
2017-04-15 01:40:32 +08:00
The tarball from the previsouly installed SRPM should be there. This is the name we will use. For this example, the name is ZoneMinder-1.28.1.tar.gz. From the root folder of the local ZoneMinder git repository, execute the following:
2016-02-29 02:54:21 +08:00
::
2017-04-26 22:48:15 +08:00
git archive --prefix=ZoneMinder-1.28.1/ -o ~/rpmbuild/SOURCES/zoneminder-1.28.1.tar.gz HEAD
2016-02-29 02:54:21 +08:00
Note that we are overwriting the original tarball. If you wish to keep the original tarball then create a copy prior to creating the new tarball.
From the root of the local ZoneMinder git repo, execute the following:
2016-02-29 02:54:21 +08:00
::
rpmbuild -bs --nodeps distros/redhat/zoneminder.spec
Notice we used the rpm specfile that is part of the latest master branch you just downloaded, rather than the one that may be in your ~/rpmbbuild/SOURCES folder.
2016-02-29 02:54:21 +08:00
2016-03-25 20:54:37 +08:00
This step will overwrite the SRPM you originally downloaded, so you may want to back it up prior to completing this step. Note that the name of the specfile will vary slightly depending on the target distro.
2016-03-25 20:54:37 +08:00
You should now have a new SRPM under ~/rpmbuild/SRPMS. In our example, the SRPM is called zoneminder-1.28.1-2.el7.centos.src.rpm. Now follow the previous instructions that describe how to use the buildzm script, using ~/rpmbuild/SRPMS/zoneminder-1.28.1-2.el7.centos.src.rpm as the path to your SRPM.