Gentoo – Zoneminder
The Zoneminder ebuild in the portage tree has been broken for a couple of years now. Here is the process I use to build Zoneminder from source on a Gentoo x86 install:
1. Get Root Access
sudo -s
2. Make The Source Directory
mkdir /usr/src/Zoneminder
3. Get The Source Package
cd /usr/src/Zoneminder
Stable: 1.25.0
wget http://www2.zoneminder.com/downloads/ZoneMinder-1.25.0.tar.gz
Development: svn
svn co http://svn.zoneminder.com/svn/zm/trunk zm
4. Unpack The Sources
tar xzf ZoneMinder-1.25.0.tar.gz
5. Install Required Dependencies
Add the following to /etc/portage/package.keywords:
#Zoneminder www-misc/zoneminder dev-perl/PHP-Serialization virtual/perl-Module-Load perl-core/Module-Load
Emerge all dependencies:
emerge -avq dev-perl/Archive-Zip dev-perl/Device-SerialPort dev-perl/MIME-Lite dev-perl/MIME-tools dev-perl/PHP-Serialization virtual/perl-Getopt-Long virtual/perl-Module-Load virtual/perl-Time-HiRes dev-perl/DateManip ffmpeg libjpeg-turbo gnutls libgcrypt g-cpan
Install Sys::Mmap with cpan:
g-cpan -i Sys::Mmap
6. Configure and Build Zoneminder
cd /usr/src/Zoneminder/ZoneMinder-1.25.0
Configure the sources (note this is for a localhost install, you can change it to whatever vhost you want)
Make sure to change the zm db username and password to reflect your setup.
./configure --with-webdir=/var/www/localhost/htdocs/zm --with-cgidir=/var/www/localhost/cgi-bin ZM_DB_USER="YOUR_USER" ZM_DB_PASS="YOUR_PASS" cflags="-O2 -march=native -fomit-frame-pointer" cxxflags="-O2 -march=native -fomit-frame-pointer" CPPFLAGS="-D__STDC_CONSTANT_MACROS"
Setup the DB
mysql -u root -p create database zm; grant select,insert,update,delete on zm.* to '<database user>'@localhost identified by '<database password>'; flush privileges; exit
Import the Initial DB
mysql -u root -p -D zm < db/zm_create.sql
Build it
make clean make make install
After all that Zoneminder should be installed on your system and ready to run. Here are is an init script that I created to get Zoneminder started, stopped and reset as well as allow it to start up and shutdown on a machine power cycle.
#!/sbin/runscript
# File: /etc/init.d/zoneminder
# Purpose: Startup the Zoneminder Server
# By: Ronny L. Bull
# Date: 8-31-2010
ZM_START='/usr/local/bin/zmpkg.pl start'
ZM_STOP='/usr/local/bin/zmpkg.pl stop'
depend() {
need net mysql
}
start() {
ebegin "Starting Zoneminder"
$ZM_START
eend $? "Failed to start Zoneminder!"
}
stop() {
ebegin "Stopping Zoneminder"
$ZM_STOP
eend $? "Failed to stop Zoneminder!"
}
Save the file as zoneminder and copy it to /etc/init.d/zoneminder then make sure to run
chmod +x /etc/init.d/zoneminder
Now you can start and stop your server by doing:
/etc/init.d/zoneminder start
If you want it to start on power up add it to the default runlevel
rc-update add zoneminder default
Thats it! You should now be able to access the Zoneminder web interface at http://serverip/zm.
Now go buy some cameras!
