HOME
CONTACT

Click Here Software Co

Creating computer software
Since 1983

ZoneMinder130 Home --> source code

ZoneMinder130 Source Code

Current Release V1.30.12-1
Released November 2, 2024

This page is for those who wish to build the ZoneMinder130 deb file rather than downloading and installing the deb file that is already prepared for you. You might do this if your system is similar to one of the supported Debian or Ubuntu systems, but not quite the same. It is rather easy to adapt the source to work on most any Debian based system. If you wish to build the ZoneMinder130 deb file yourself, it's easy because I've done all the hard work for you. Be sure to do the development on the same machine you intend to run ZoneMinder130 on or at least on a machine that is running the same Debian or Ubuntu version as the one you will be compiling for.

Download the source tarball you wish to work on and follow the instructions below.

Debian 11 bullseye

Debian 12 bookworm

Debian 13 trixie

Ubuntu 22.04 jammy

Ubuntu 24.04 noble

Before proceeding, the build process needs to enter your name and email address into the deb package. This is a Debian and Ubuntu requirement. So, in your home directory, edit the .bashrc file. Load it into a text editor such as pico:


pico .bashrc

Scroll to the bottom of the text and add the following lines:


DEBEMAIL="yourname@youremail.com"
DEBFULLNAME="Firstname Lastname"
export DEBEMAIL DEBFULLNAME

Enter your email address on the DEBMAIL line and your first name and last name on the DEBFULLNAME line. Then use CTRL-x to save the file and exit.

Make the above changes in the .bashrc file take effect by logging out and then logging back in.

Now that you have the file downloaded, prepare a location for the build process. In my case, I use /usr/local/src for the building of the deb package. In these instructions, that is the location we will use, but you can use whatever suits you. So, login as root and navigate to the following directory:


cd /usr/local/src

Next, create the root directory of our build location:


mkdir zoneminder130-dev

Next, copy the source code file you downloaded to this newly created directory and then navigate into the zoneminder130-dev directory and unpack the tar.gz file:


cd /usr/local/src/zoneminder130-dev
tar -xvf zoneminder130_1.30.10-102+deb12_amd64.tar.gz

The above filename might be different than what you downloaded, depending on the version number, release number, and distro. For this example, we will use the above filename. Once unpacked you will find a directory named zoneminder130_release and a file name howtobuild.txt which is a copy of what you are reading right now. You won't have to keep referring to this web page. Just load that file into a text editor and follow along.

Navigate into the release directory:


cd zoneminder130_release

Next, we need to install all the development tools we will need along with all the dev dependencies and libraries that are needed. So, still as root, and during the very first time setting up this development machine, issue the following two commands:


apt install devscripts equivs
mk-build-deps -ir ./debian/control

The above two commands will not have to be repeated on this machine.

Then navigate above the development directory:


cd /usr/local/src

And assign your normal user to every file in the development directory:


chown -R username:username zoneminder130-dev/

Be sure to substitute your username on this machine in place of username in the command above.

You may now exit as root and login as the regular user that you changed ownership of the files to. You will always do the source editing and compiling as a normal user.

Enter the release directory:


cd /usr/local/src/zoneminder130-dev/zoneminder130_release

Next, do the following two commands only the first time or anytime after you have modified certain cmake files such as CMakeLists.txt or various config files or .in files:


debuild -- clean
cmake ./

After running cmake, delete the cache file or the build will fail with an error:


rm CMakeCache.txt

When you build the new package, any tar.gz file contained in the zoneminder130-dev directory will be deleted. So, if you still have the original source tar.gz file there, copy it to somewhere else in case you have to start all over again.

You are now ready to build the zoneminder130 deb package. You will use the build.sh script to do the building for you. Issue the following command. If you make changes to the source code, just use build.sh to build another package to test your changes.


./build.sh 1 nosign

A new deb file will be built and stored in the parent directory along with an updated version of the source code in a tar.gz file. The deb file will look something like this:

zoneminder130_1.30.10-1+deb12_amd64.deb

It will also create some or all of the following files:

zoneminder130_1.30.10-1+deb12_amd64.build
zoneminder130_1.30.10-1+deb12_amd64.buildinfo
zoneminder130_1.30.10-1+deb12_amd64.changes
zoneminder130_1.30.10-1+deb12.debian.tar.xz
zoneminder130_1.30.10-1+deb12.dsc

The only difference in the filenames might be the version number, the release number, and the distro.

The only file you really need is the deb file.

If you wish to change the version number, which in this case is 1.30.10, edit the "version" file.

If you wish to change the release number you will change it in the build.sh command line like this:


./build.sh 2 nosign

The nosign option will build the deb package without a need for signing it. You can do this since you are not sharing the package with anyone but yourself. If you wish to build a signed package, that will require a little more work so that you have a gpg signing key to work with.

The above example will make the new deb package with a filename that looks like this:

zoneminder130_1.30.10-2+deb12_amd64.deb

You can find the deb file one directory up. Log in as root or use sudo and use apt to install ZoneMinder130:


apt install /usr/local/src/zoneminder130-dev/zoneminder130_1.30.10-2+deb12_amd64.deb

If this is the first time doing the installation, apt will install all the dependencies required by ZoneMinder130 including apache2, ffmpeg, mariadb, perl, and php, as well as many other needed libraries and files.

If this is not the first time installing, then apt will perform an upgrade of ZoneMinder130. Just be sure to increment the release number to a higher number each time. For instance, use 3 the next time. If you edit the version file and change the version number to something like 1.30.500, you can then change the release number back to 1. If a version number is lower, or the release number is lower with the same version number, apt will see it as a downgrade.

The other options to the build.sh script are binary and nostrip. These are used in place of the nosign option. The binary option will create a signed deb package. The nostrip option will also create a signed deb package but without stripping the debug symbols from the binary files that are included in the package. The nosign option as used above is the one that most people will use as they are testing changes or just creating the package for their own use and not intending to share it with the rest of the world.

Building a signed package

It is not necessary to build a signed package unless you plan to release your own version of ZoneMinder130 and share it with the rest of the world such as in a respository that is accessed by apt. Before doing so, make sure you can build an unsigned package by following all the instructions up to this point. Make sure the package installs cleanly and runs well and without issues. Once you have done that, you can proceed to build a signed package. The only real difference is that the package will be signed and you will also have to supply a signing key to distribute with it.

To test if you already have a key to use, test it with the build.sh script as follows:


./build.sh 1 binary

If the build went all the way through and asked you for a password and finished without errors, then you have already created a signing key for your email address and you need not go any further. If it failed due to not finding a key, you will have to create one. There are many sites on the internet that explain this, some explain it well and some just go off in many different directions and fail to explain it clearly. This might be a good one to check:

keyring.debian.org/creating-key.html

And if you have any problems, please try to figure it out yourself. You might have made a change that you forgot about and finding it and undoing that change can be time consuming. Making changes to the source code of ZoneMinder130 can be very tricky. Make your changes carefully. Several different people have been involved in the original ZoneMinder project over the years. Some of the code formatting still needs some cleaning up. I haven't taken the time to clean it all up yet as there is so much of it. It was very difficult for me to figure out all the parts that I needed to work on. There is still a lot more that I want to do and I will tackle each part as I go along.

Have fun...

Maurice Randall