Ad Widget

Collapse

zabbix 1.4.4 rpm for SuSE specfile

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • crosmuller
    Junior Member
    • Jan 2008
    • 5

    #1

    zabbix 1.4.4 rpm for SuSE specfile

    Hi everyone,

    I built a specfile for zabbix 1.4.4 server and one for the agent, it is based on jojo's specfiles I found in thread http://www.zabbix.com/forum/showthre...highlight=spec
    The specfile is only tested on a 64bits Suse 10.1 server.

    Maybe it is useful for someone, also any feedback is appreciated. The server rpm only works correctly if there is no password for the mysql root user, I'm not quite sure how to solve that.....

    server specfile

    Code:
    #
    # spec file for package zabbix 1.4.4
    #
    # Based on a spec file by Sol Tutaki <[email protected]>
    
    Summary: An enterprise-class open source distributed monitoring solution for networks and applications.
    Name: zabbix
    Version: 1.4
    Release: 4
    License:        GPL
    Vendor:         ZABBIX SIA
    URL:            http://www.zabbix.org
    Packager:       Chantal Rosmuller <[email protected]>
    
    Group:          System Environment/Daemons
    Source:         zabbix-1.4.4.tar.gz
    Patch0:         zabbix-1.4.4-netsnmp.patch
    BuildPrereq:    mysql, net-snmp-devel, php5, php5-mysql, apache2, php5-gd, php5-bcmath, curl-devel
    Buildroot:      %{_tmppath}/%{name}-%{version}-buildroot
    
    %description
    The ZABBIX server is a network monitor
    
    %define _prefix         /opt/zabbix
    %define zabbix_bindir   %{_prefix}/bin
    %define zabbix_confdir  /etc/zabbix
    %define zabbix_initdir  /etc/init.d
    %define zabbix_docdir   %{_prefix}/doc
    %define zabbix_piddir   /var/run/zabbix/
    %define zabbix_logdir   %{_prefix}/log
    %define zabbix_scriptsdir %{_prefix}/scripts
    %define apache_sysconfdir       /etc/apache2
    %define zabbix_datadir          %{_prefix}/misc
    %define zabbix_phpfrontend      %{_prefix}/www
    %define zabbix_libdir           %{_prefix}/lib
    %define dbuser                  root
    
    %prep
    %setup -q -n zabbix-1.4.4
    %patch0 -p1
    
    %build
    %configure --prefix=%{_prefix} --with-mysql --enable-server --enable-ipv6  --with-net-snmp --with-libcurl
    make
    
    %clean
    rm -fr $RPM_BUILD_ROOT
    
    %pre
    # create ZABBIX group
    if [ -z "`grep zabbix /etc/group`" ]; then
      /usr/sbin/groupadd zabbix >/dev/null 2>&1
    fi
    
    # create ZABBIX uzer
    if [ -z "`grep zabbix /etc/passwd`" ]; then
      /usr/sbin/useradd -g zabbix -c "Zabbix user account" -s /bin/false zabbix >/dev/null 2>&1
    fi
    
    %install
    
    # make pid directory
    install -d %{zabbix_piddir}
    chmod -R 777 %{zabbix_piddir}
    
    # copy documentation
    install -d %{buildroot}%{zabbix_docdir}
    install -m 644 AUTHORS %{buildroot}%{zabbix_docdir}/AUTHORS
    install -m 644 COPYING %{buildroot}%{zabbix_docdir}/COPYING
    install -m 644 NEWS %{buildroot}%{zabbix_docdir}/NEWS
    install -m 644 README %{buildroot}%{zabbix_docdir}/README
    
    # copy binaries
    install -d %{buildroot}%{zabbix_bindir}
    install -s -m 755 src/zabbix_server/zabbix_server %{buildroot}%{zabbix_bindir}/zabbix_server
    
    # copy config files
    install -d %{buildroot}%{zabbix_confdir}
    install -m 755 misc/conf/zabbix_server.conf %{buildroot}%{zabbix_confdir}/zabbix_server.conf
    
    # copy startup script
    install -d %{buildroot}%{zabbix_initdir}
    install -m 755 misc/init.d/suse/9.3/zabbix_server %{buildroot}%{zabbix_initdir}/zabbix_server
    
    # SQL scripts
    install -d %{buildroot}%{zabbix_datadir}
    cp -r create/* %{buildroot}%{zabbix_datadir}
    
    # Log folder
    install -d %{buildroot}%{zabbix_logdir}
    
    # apache2 config
    cat >zabbix.conf <<EOF
    Alias /zabbix %{zabbix_phpfrontend}
    
    <Directory "%{zabbix_phpfrontend}">
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    EOF
    
    
    # Place the newly created zabbix.conf file into the httpd conf.d directory
    install -d %{buildroot}%{apache_sysconfdir}/conf.d
    install -m 644 zabbix.conf %{buildroot}%{apache_sysconfdir}/conf.d/zabbix.conf
    
    # Copy the PHP frontends
    install -d %{buildroot}%{zabbix_phpfrontend}
    cp -r frontends/php/* %{buildroot}%{zabbix_phpfrontend}
    
    %post
    # configure ZABBIX server daemon
    sed -i  -e "s#AlertScriptsPath=/home/zabbix/bin/#AlertScriptsPath=%{zabbix_bindir}/#g" \
            -e "s#PidFile=/var/tmp/zabbix_server.pid#PidFile=%{zabbix_piddir}/zabbix_server.pid#g" \
            -e "s#LogFile=/tmp/zabbix_server.log#LogFile=%{zabbix_logdir}/zabbix.log#g" \
            -e "s#DBUser=root#DBUser=zabbix#g" \
            %{zabbix_confdir}/zabbix_server.conf
    # configure the init script
    sed -i -e "s#/var/tmp/zabbix_server.pid#/var/run/zabbix/zabbix_server.pid#g"\
            %{zabbix_initdir}/zabbix_server
    
    
    # Change the DB TYPE to MYSQL and the DB USER to zabbix
    sed -i  -e "s#\$DB_TYPE =\"POSTGRESQL\";#\$DB_TYPE =\"MYSQL\";#g" \
            -e "s#=\"root\";#=\"zabbix\";#g" \
            %{zabbix_phpfrontend}/include/db.inc.php
    
    sed -i  -e "s#grep zabbix_server#grep zabbix#g" \
            %{zabbix_phpfrontend}/include/config.inc.php
    
    
    chkconfig --add zabbix_server
    chkconfig zabbix_server on
    
    if [ -z "`grep -i "Zabbix server" /etc/services`" ]; then
      cat >>etc/services <<EOF
    zabbix_server          10051/tcp                       # Zabbix server
    EOF
    fi
    
    
    # Create the tables inside the database
    cat %{zabbix_datadir}/schema/mysql.sql |mysql -u%{dbuser} zabbix
    # Populate the tables with data and then remove the data directory
    cat %{zabbix_datadir}/data/data.sql |mysql -u%{dbuser} zabbix
    cat %{zabbix_datadir}/data/images_mysql.sql |mysql -u%{dbuser} zabbix
    rm -rf %{zabbix_datadir}
    %{zabbix_initdir}/zabbix_server start
    
    %preun
    %{zabbix_initdir}/zabbix_server stop || true
    rm -f %{zabbix_piddir}/zabbix.pid
    if [ $1 -eq 0 ] ; then
            chkconfig --del zabbix_server
    fi
    
    %files
    %defattr(0755,zabbix,zabbix)
    
    %dir %{zabbix_docdir}
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/AUTHORS
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/COPYING
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/NEWS
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/README
    
    %dir %{zabbix_confdir}
    %attr(0644,zabbix,zabbix) %{zabbix_confdir}/zabbix_server.conf
    
    %dir %{zabbix_bindir}
    %{zabbix_bindir}/zabbix_server
    
    %{zabbix_initdir}/zabbix_server
    
    %dir %{zabbix_datadir}
    %{zabbix_datadir}/
    
    %dir %{zabbix_logdir}
    
    %dir %{zabbix_phpfrontend}
    %attr(0755,zabbix,zabbix) %{zabbix_phpfrontend}/
    
    %attr(0644,root,root) %{apache_sysconfdir}/conf.d/zabbix.conf
    
    %changelog
    net snmp patch file (needed for zabbix server)

    Code:
    --- zabbix-1.4.4/configure      2007-12-17 14:27:26.000000000 +0100
    +++ configure   2008-01-04 15:38:23.000000000 +0100
    @@ -10889,7 +10889,7 @@
       echo $ECHO_N "(cached) $ECHO_C" >&6
     else
       ac_check_lib_save_LIBS=$LIBS
    -LIBS="-lnetsnmp   $LIBS"
    +LIBS="-lnetsnmp -lcurl $LIBS"
     cat >conftest.$ac_ext <<_ACEOF
     /* confdefs.h.  */
     _ACEOF
  • crosmuller
    Junior Member
    • Jan 2008
    • 5

    #2
    and the agent

    and zabbix agent

    Code:
    #
    # spec file for package zabbix 1.4.4
    # Based on a spec file by Sol Tutaki <[email protected]>
    
    Summary: ZABBIX network monitor agent
    Name: zabbix-agent
    Version: 1.4
    Release: 4
    License:        GPL
    Vendor:         ZABBIX SIA
    URL:            http://www.zabbix.org
    Packager:       Chantal Rosmuller <[email protected]>
    Group:          System Environment/Daemons
    Source:         zabbix-1.4.4.tar.gz
    BuildPrereq:    net-snmp-devel, curl-devel
    Buildroot:      %{_tmppath}/%{name}-%{version}-buildroot
    
    %description
    The ZABBIX agent
    
    %define _prefix         /opt/zabbix
    %define zabbix_bindir   %{_prefix}/bin
    %define zabbix_confdir  /etc/zabbix
    %define zabbix_initdir  /etc/init.d
    %define zabbix_docdir   %{_prefix}/doc
    %define zabbix_piddir   /var/run/zabbix/
    %define zabbix_logdir   %{_prefix}/log
    %define zabbix_scriptsdir %{_prefix}/scripts
    
    %prep
    %setup -q -n zabbix-1.4.4
    
    %build
    %configure --prefix=%{_prefix} --enable-agent
    make
    
    %clean
    rm -fr $RPM_BUILD_ROOT
    
    %pre
    # create ZABBIX group
    if [ -z "`grep zabbix /etc/group`" ]; then
      /usr/sbin/groupadd zabbix >/dev/null 2>&1
    fi
    
    # create ZABBIX uzer
    if [ -z "`grep zabbix /etc/passwd`" ]; then
      /usr/sbin/useradd -g zabbix -c "Zabbix user account" -s /bin/false zabbix >/dev/null 2>&1
    fi
    
    %install
    
    # make pid directory
    install -d %{zabbix_piddir}
    chmod -R 777 %{zabbix_piddir}
    
    # copy documentation
    install -d %{buildroot}%{zabbix_docdir}
    install -m 644 AUTHORS %{buildroot}%{zabbix_docdir}/AUTHORS
    install -m 644 COPYING %{buildroot}%{zabbix_docdir}/COPYING
    install -m 644 NEWS %{buildroot}%{zabbix_docdir}/NEWS
    install -m 644 README %{buildroot}%{zabbix_docdir}/README
    
    # copy binaries
    install -d %{buildroot}%{zabbix_bindir}
    install -s -m 755 src/zabbix_agent/zabbix_agentd %{buildroot}%{zabbix_bindir}/zabbix_agentd
    
    # copy config files
    install -d %{buildroot}%{zabbix_confdir}
    install -m 755 misc/conf/zabbix_agentd.conf %{buildroot}%{zabbix_confdir}/zabbix_agentd.conf
    
    # copy startup script
    install -d %{buildroot}%{zabbix_initdir}
    install -m 755 misc/init.d/suse/9.3/zabbix_agentd %{buildroot}%{zabbix_initdir}/zabbix_agentd
    
    
    # Log folder
    install -d %{buildroot}%{zabbix_logdir}
    
    
    %post
    # configure ZABBIX agent daemon
    %{__sed} -i -e "s#Hostname=localhost#Hostname=`uname -n`#g" \
                -e "s#PidFile=/var/tmp/zabbix_agentd.pid#PidFile=%{zabbix_piddir}/zabbix_agentd.pid#g" \
                -e "s#LogFile=/tmp/zabbix_agentd.log#LogFile=%{zabbix_logdir}/zabbix_agentd.log#g" \
                -e "s#Timeout=3#Timeout=30#g" \
            %{zabbix_confdir}/zabbix_agentd.conf
    
    %{__sed} -i -e "s#BASEDIR=\/opt\/zabbix#USER=zabbix; BASEDIR=%{prefix}; conffile=\"%{zabbix_confdir}/zabbix_agentd.conf\"#g" \
                -e "s#\$FULLPATH#\$FULLPATH -c \$conffile#g" \
                    -e "s#/var/tmp/zabbix_agentd.pid#/var/run/zabbix/zabbix_agentd.pid#g"\
            %{zabbix_initdir}/zabbix_agentd
    
    chkconfig --add zabbix_agentd
    chkconfig  zabbix_agentd on
    
    if [ -z "`grep -i "Zabbix agent" /etc/services`" ]; then
      cat >>etc/services <<EOF
    zabbix-agentd          10050/tcp                       # Zabbix agent
    EOF
    fi
    
    %{zabbix_initdir}/zabbix_agentd start
    
    %preun
    %{zabbix_initdir}/zabbix_agentd stop || true
    rm -f %{zabbix_piddir}/zabbix_agentd.pid
    if [ $1 -eq 0 ] ; then
            chkconfig --del zabbix_agentd
    fi
    
    %files
    %defattr(0755,zabbix,zabbix)
    
    %dir %{zabbix_docdir}
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/AUTHORS
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/COPYING
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/NEWS
    %attr(0644,zabbix,zabbix) %{zabbix_docdir}/README
    
    %dir %{zabbix_confdir}
    %attr(0644,zabbix,zabbix) %{zabbix_confdir}/zabbix_agentd.conf
    
    %dir %{zabbix_bindir}
    %{zabbix_bindir}/zabbix_agentd
    
    %{zabbix_initdir}/zabbix_agentd
    
    %dir %{zabbix_logdir}
    
    %changelog

    Comment

    • NOB
      Senior Member
      Zabbix Certified Specialist
      • Mar 2007
      • 469

      #3
      Hi Chantal

      thank you for the spec files.
      My comment:

      Originally posted by crosmuller
      and zabbix agent

      Code:
      some useful stuff omitted
      
      Packager:       Chantal Rosmuller <[email protected]>
      Group:          System Environment/Daemons
      Source:         zabbix-1.4.4.tar.gz
      BuildPrereq:    net-snmp-devel, curl-devel
      
      a lot of useful stuff omitted
      OK, Now I know why the Debian-Agent depends on an LDAP-Client !

      People tend to copy the BuildPrereq from the server to the agent spec-file
      and don't delete all the dependencies.

      The ZABBIX-Agent does not depend on any third-party libraries
      like net-snmp-devel, curl-devel, LDAP-Client, etc.
      Just the server does, depending on the ideas of the packager.

      These lines a not only wrong but really bad: they result in the installation of
      the net-snmp-devel, curl-devel and LDAP-Client software on ALL
      agent systems.
      I don't want that.
      The more software on the systems the more downtime for pro-active
      patching we need.

      Regards

      Norbert.
      Last edited by NOB; 18-01-2008, 10:52.

      Comment

      • crosmuller
        Junior Member
        • Jan 2008
        • 5

        #4
        changed agent specfile

        Thanks Norbert, you are right, I changed the agent specfile:

        Code:
        Summary: ZABBIX network monitor agent
        Name: zabbix-agent
        Version: 1.4
        Release: 4
        License:        GPL
        Vendor:         ZABBIX SIA
        URL:            http://www.zabbix.org
        Packager:       Chantal Rosmuller <[email protected]>
        Group:          System Environment/Daemons
        Source:         zabbix-1.4.4.tar.gz
        Buildroot:      %{_tmppath}/%{name}-%{version}-buildroot
        
        %description
        The ZABBIX agent
        
        %define _prefix         /opt/zabbix
        %define zabbix_bindir   %{_prefix}/bin
        %define zabbix_confdir  /etc/zabbix
        %define zabbix_initdir  /etc/init.d
        %define zabbix_docdir   %{_prefix}/doc
        %define zabbix_piddir   /var/run/zabbix/
        %define zabbix_logdir   %{_prefix}/log
        %define zabbix_scriptsdir %{_prefix}/scripts
        
        %prep
        %setup -q -n zabbix-1.4.4
        
        %build
        %configure --prefix=%{_prefix} --enable-agent
        make
        
        %clean
        rm -fr $RPM_BUILD_ROOT
        
        %pre
        # create ZABBIX group
        if [ -z "`grep zabbix /etc/group`" ]; then
          /usr/sbin/groupadd zabbix >/dev/null 2>&1
        fi
        
        # create ZABBIX uzer
        if [ -z "`grep zabbix /etc/passwd`" ]; then
          /usr/sbin/useradd -g zabbix -c "Zabbix user account" -s /bin/false zabbix >/dev/null 2>&1
        fi
        
        %install
        
        # make pid directory
        install -d %{zabbix_piddir}
        chmod -R 777 %{zabbix_piddir}
        
        # copy documentation
        install -d %{buildroot}%{zabbix_docdir}
        install -m 644 AUTHORS %{buildroot}%{zabbix_docdir}/AUTHORS
        install -m 644 COPYING %{buildroot}%{zabbix_docdir}/COPYING
        install -m 644 NEWS %{buildroot}%{zabbix_docdir}/NEWS
        install -m 644 README %{buildroot}%{zabbix_docdir}/README
        
        # copy binaries
        install -d %{buildroot}%{zabbix_bindir}
        install -s -m 755 src/zabbix_agent/zabbix_agentd %{buildroot}%{zabbix_bindir}/zabbix_agentd
        
        # copy config files
        install -d %{buildroot}%{zabbix_confdir}
        install -m 755 misc/conf/zabbix_agentd.conf %{buildroot}%{zabbix_confdir}/zabbix_agentd.conf
        
        # copy startup script
        install -d %{buildroot}%{zabbix_initdir}
        install -m 755 misc/init.d/suse/9.3/zabbix_agentd %{buildroot}%{zabbix_initdir}/zabbix_agentd
        
        
        # Log folder
        install -d %{buildroot}%{zabbix_logdir}
        
        
        %post
        # configure ZABBIX agent daemon
        %{__sed} -i -e "s#Hostname=localhost#Hostname=`uname -n`#g" \
                    -e "s#PidFile=/var/tmp/zabbix_agentd.pid#PidFile=%{zabbix_piddir}/zabbix_agentd.pid#g" \
                    -e "s#LogFile=/tmp/zabbix_agentd.log#LogFile=%{zabbix_logdir}/zabbix_agentd.log#g" \
                    -e "s#Timeout=3#Timeout=30#g" \
                %{zabbix_confdir}/zabbix_agentd.conf
        
        %{__sed} -i -e "s#BASEDIR=\/opt\/zabbix#USER=zabbix; BASEDIR=%{prefix}; conffile=\"%{zabbix_confdir}/zabbix_agentd.conf\"#g" \
                    -e "s#\$FULLPATH#\$FULLPATH -c \$conffile#g" \
                        -e "s#/var/tmp/zabbix_agentd.pid#/var/run/zabbix/zabbix_agentd.pid#g"\
                %{zabbix_initdir}/zabbix_agentd
        
        chkconfig --add zabbix_agentd
        chkconfig  zabbix_agentd on
        
        if [ -z "`grep -i "Zabbix agent" /etc/services`" ]; then
          cat >>etc/services <<EOF
        zabbix-agentd          10050/tcp                       # Zabbix agent
        EOF
        fi
        
        %{zabbix_initdir}/zabbix_agentd start
        
        %preun
        %{zabbix_initdir}/zabbix_agentd stop || true
        rm -f %{zabbix_piddir}/zabbix_agentd.pid
        if [ $1 -eq 0 ] ; then
                chkconfig --del zabbix_agentd
        fi
        
        %files
        %defattr(0755,zabbix,zabbix)
        
        %dir %{zabbix_docdir}
        %attr(0644,zabbix,zabbix) %{zabbix_docdir}/AUTHORS
        %attr(0644,zabbix,zabbix) %{zabbix_docdir}/COPYING
        %attr(0644,zabbix,zabbix) %{zabbix_docdir}/NEWS
        %attr(0644,zabbix,zabbix) %{zabbix_docdir}/README
        
        %dir %{zabbix_confdir}
        %attr(0644,zabbix,zabbix) %{zabbix_confdir}/zabbix_agentd.conf
        
        %dir %{zabbix_bindir}
        %{zabbix_bindir}/zabbix_agentd
        
        %{zabbix_initdir}/zabbix_agentd
        
        %dir %{zabbix_logdir}
        
        %changelog

        Comment

        • crosmuller
          Junior Member
          • Jan 2008
          • 5

          #5
          fixed mysql problem

          The specfile for the zabbix server now also works when the mysql root user has a password:

          Code:
          #
          # spec file for package zabbix 1.4.4
          #
          # Copyright (c) 2003 SuSE Linux AG, Nuernberg, Germany.
          # This file and all modifications and additions to the pristine
          # package are under the same license as the package itself.
          #
          # Please submit bug fixes or comments via http://www.suse.de/feedback/
          #
          # Based on a spec file by Sol Tutaki <[email protected]>
          
          Summary: An enterprise-class open source distributed monitoring solution for networks and applications.
          Name: zabbix
          Version: 1.4
          Release: 4
          License:        GPL
          Vendor:         ZABBIX SIA
          URL:            http://www.zabbix.org
          Packager:       Chantal Rosmuller <[email protected]>
          
          Group:          System Environment/Daemons
          Source:         zabbix-1.4.4.tar.gz
          Patch0:         zabbix-1.4.4-netsnmp.patch
          BuildPrereq:    mysql, net-snmp-devel, php5, php5-mysql, apache2, php5-gd, php5-bcmath, curl-devel
          Buildroot:      %{_tmppath}/%{name}-%{version}-buildroot
          
          %description
          The ZABBIX server is a network monitor
          
          %define _prefix         /opt/zabbix
          %define zabbix_bindir   %{_prefix}/bin
          %define zabbix_confdir  /etc/zabbix
          %define zabbix_initdir  /etc/init.d
          %define zabbix_docdir   %{_prefix}/doc
          %define zabbix_piddir   /var/run/zabbix/
          %define zabbix_logdir   %{_prefix}/log
          %define zabbix_scriptsdir %{_prefix}/scripts
          %define apache_sysconfdir       /etc/apache2
          %define zabbix_datadir          %{_prefix}/misc
          %define zabbix_phpfrontend      %{_prefix}/www
          %define zabbix_libdir           %{_prefix}/lib
          %define dbuser                  root
          
          %prep
          %setup -q -n zabbix-1.4.4
          %patch0 -p1
          
          %build
          %configure --prefix=%{_prefix} --with-mysql --enable-server --enable-ipv6  --with-net-snmp --with-libcurl
          make
          
          %clean
          rm -fr $RPM_BUILD_ROOT
          
          %pre
          # create ZABBIX group
          if [ -z "`grep zabbix /etc/group`" ]; then
            /usr/sbin/groupadd zabbix >/dev/null 2>&1
          fi
          
          # create ZABBIX uzer
          if [ -z "`grep zabbix /etc/passwd`" ]; then
            /usr/sbin/useradd -g zabbix -c "Zabbix user account" -s /bin/false zabbix >/dev/null 2>&1
          fi
          
          %install
          
          # make pid directory
          install -d %{zabbix_piddir}
          chmod -R 777 %{zabbix_piddir}
          
          # copy documentation
          install -d %{buildroot}%{zabbix_docdir}
          install -m 644 AUTHORS %{buildroot}%{zabbix_docdir}/AUTHORS
          install -m 644 COPYING %{buildroot}%{zabbix_docdir}/COPYING
          install -m 644 NEWS %{buildroot}%{zabbix_docdir}/NEWS
          install -m 644 README %{buildroot}%{zabbix_docdir}/README
          
          # copy binaries
          install -d %{buildroot}%{zabbix_bindir}
          install -s -m 755 src/zabbix_server/zabbix_server %{buildroot}%{zabbix_bindir}/zabbix_server
          
          # copy config files
          install -d %{buildroot}%{zabbix_confdir}
          install -m 755 misc/conf/zabbix_server.conf %{buildroot}%{zabbix_confdir}/zabbix_server.conf
          
          # copy startup script
          install -d %{buildroot}%{zabbix_initdir}
          install -m 755 misc/init.d/suse/9.3/zabbix_server %{buildroot}%{zabbix_initdir}/zabbix_server
          
          # SQL scripts
          install -d %{buildroot}%{zabbix_datadir}
          cp -r create/* %{buildroot}%{zabbix_datadir}
          
          # Log folder
          install -d %{buildroot}%{zabbix_logdir}
          
          # apache2 config
          cat >zabbix.conf <<EOF
          Alias /zabbix %{zabbix_phpfrontend}
          
          <Directory "%{zabbix_phpfrontend}">
              Options FollowSymLinks
              AllowOverride None
              Order allow,deny
              Allow from all
          </Directory>
          EOF
          
          
          # Place the newly created zabbix.conf file into the httpd conf.d directory
          install -d %{buildroot}%{apache_sysconfdir}/conf.d
          install -m 644 zabbix.conf %{buildroot}%{apache_sysconfdir}/conf.d/zabbix.conf
          
          # Copy the PHP frontends
          install -d %{buildroot}%{zabbix_phpfrontend}
          cp -r frontends/php/* %{buildroot}%{zabbix_phpfrontend}
          
          %post
          # configure ZABBIX server daemon
          sed -i  -e "s#AlertScriptsPath=/home/zabbix/bin/#AlertScriptsPath=%{zabbix_bindir}/#g" \
                  -e "s#PidFile=/var/tmp/zabbix_server.pid#PidFile=%{zabbix_piddir}/zabbix_server.pid#g" \
                  -e "s#LogFile=/tmp/zabbix_server.log#LogFile=%{zabbix_logdir}/zabbix.log#g" \
                  -e "s#DBUser=root#DBUser=zabbix#g" \
                  %{zabbix_confdir}/zabbix_server.conf
          # configure the init script
          sed -i -e "s#/var/tmp/zabbix_server.pid#/var/run/zabbix/zabbix_server.pid#g"\
                  %{zabbix_initdir}/zabbix_server
          
          
          # Change the DB TYPE to MYSQL and the DB USER to zabbix
          sed -i  -e "s#\$DB_TYPE =\"POSTGRESQL\";#\$DB_TYPE =\"MYSQL\";#g" \
                  -e "s#=\"root\";#=\"zabbix\";#g" \
                  %{zabbix_phpfrontend}/include/db.inc.php
          
          sed -i  -e "s#grep zabbix_server#grep zabbix#g" \
                  %{zabbix_phpfrontend}/include/config.inc.php
          
          
          chkconfig --add zabbix_server
          chkconfig zabbix_server on
          
          if [ -z "`grep -i "Zabbix server" /etc/services`" ]; then
            cat >>etc/services <<EOF
          zabbix_server          10051/tcp                       # Zabbix server
          EOF
          fi
          
          # Create the mysql config file
          install -d  %{_prefix}/scripts/
          echo "#!/bin/bash" >  %{_prefix}/scripts/configure_mysql.sh
          echo "## Variables" >> %{_prefix}/scripts/configure_mysql.sh
          echo "_prefix=/opt/zabbix" >> %{_prefix}/scripts/configure_mysql.sh
          echo "zabbix_datadir=\$_prefix/misc" >> %{_prefix}/scripts/configure_mysql.sh
          echo "## get mysql user and password" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"For creating the Zabbix database we need a username and password.\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"What is the username? [root]\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "read username" >> %{_prefix}/scripts/configure_mysql.sh
          echo "if test -z $username" >> %{_prefix}/scripts/configure_mysql.sh
          echo "then" >> %{_prefix}/scripts/configure_mysql.sh
          echo "        username=root" >> %{_prefix}/scripts/configure_mysql.sh
          echo "fi" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"What is the password?\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "stty -echo" >> %{_prefix}/scripts/configure_mysql.sh
          echo "read password" >> %{_prefix}/scripts/configure_mysql.sh
          echo "stty echo" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "# Create the database" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"create database zabbix\" > \$zabbix_datadir/schema/createdb.sql" >> %{_prefix}/scripts/configure_mysql.sh
          echo "mysql -u \$username -p\$password < \$zabbix_datadir/schema/createdb.sql" >> %{_prefix}/scripts/configure_mysql.sh
          echo "# Create the tables inside the database" >> %{_prefix}/scripts/configure_mysql.sh
          echo "mysql -u \$username -p\$password zabbix < \$zabbix_datadir/schema/mysql.sql" >> %{_prefix}/scripts/configure_mysql.sh
          echo "# Populate the tables with data and then remove the data directory" >> %{_prefix}/scripts/configure_mysql.sh
          echo "mysql -u \$username -p\$password zabbix < \$zabbix_datadir/data/data.sql" >> %{_prefix}/scripts/configure_mysql.sh
          echo "mysql -u \$username -p\$password zabbix < \$zabbix_datadir/data/images_mysql.sql" >> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"We also need a password for the zabbix server to connect to the database:\"" >> %{_prefix}/scripts/configure_mysql.sh
          echo "stty -echo">> %{_prefix}/scripts/configure_mysql.sh
          echo "read zabbixpassword">> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"Type it again:\"">> %{_prefix}/scripts/configure_mysql.sh
          echo "read zabbixpassword2">> %{_prefix}/scripts/configure_mysql.sh
          echo "stty echo" >> %{_prefix}/scripts/configure_mysql.sh
          echo "if [ \$zabbixpassword != \$zabbixpassword2 ]">> %{_prefix}/scripts/configure_mysql.sh
          echo "then">> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"passwords do not match\"">> %{_prefix}/scripts/configure_mysql.sh
          echo "exit">> %{_prefix}/scripts/configure_mysql.sh
          echo "else">> %{_prefix}/scripts/configure_mysql.sh
          echo "echo \"grant all privileges on zabbix.* to zabbix@localhost identified by '\$zabbixpassword'\" > \$zabbix_datadir/schema/createuser.sql" >> %{_prefix}/scripts/configure_mysql.sh
          echo "mysql -u \$username -p\$password < \$zabbix_datadir/schema/createuser.sql">> %{_prefix}/scripts/configure_mysql.sh
          echo "rm -f \$zabbix_datadir/schema/createuser.sql"  >> %{_prefix}/scripts/configure_mysql.sh
          echo "fi">> %{_prefix}/scripts/configure_mysql.sh
          
          chmod +x %{_prefix}/scripts/configure_mysql.sh
          
          echo ""
          echo "Run %{_prefix}/scripts/configure_mysql.sh to configure the database"
          echo ""
          echo "change the zabbix MySQL password in %{zabbix_confdir}/zabbix_server.conf"
          echo ""
          echo "start zabbix with %{zabbix_initdir}/zabbix_server start"
          echo ""
          
          %preun
          %{zabbix_initdir}/zabbix_server stop || true
          rm -f %{zabbix_piddir}/zabbix.pid
          if [ $1 -eq 0 ] ; then
                  chkconfig --del zabbix_server
          fi
          
          %files
          %defattr(0755,zabbix,zabbix)
          
          %dir %{zabbix_docdir}
          %attr(0644,zabbix,zabbix) %{zabbix_docdir}/AUTHORS
          %attr(0644,zabbix,zabbix) %{zabbix_docdir}/COPYING
          %attr(0644,zabbix,zabbix) %{zabbix_docdir}/NEWS
          %attr(0644,zabbix,zabbix) %{zabbix_docdir}/README
          Last edited by crosmuller; 12-05-2008, 14:18.

          Comment

          Working...