歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 定制zabbix的rpm包---spec文件的書寫

定制zabbix的rpm包---spec文件的書寫

日期:2017/2/27 16:02:00   编辑:Linux教程
定制zabbix的rpm包
%define zabbix_group zabbix 
%define zabbix_user zabbix 
 
Name:           zabbix   
Version:    2.0.4 
Release:    1%{?dist}.zbx 
Summary:    zabbix monitor 
Vendor:         [email protected] 
 
Group:          System Environment/Daemons   
License:    GPL 
URL:        http://www.zabbix.com 
Source0:    http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz 
Source1:        zabbix_custom.tar.gz 
Source2:        zabbix-web.conf 
#BuildRoot: %{_tmppath}/%{name}-%{version} 
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 
 
BuildRequires:  gcc 
BuildRequires:  make 
 
Requires(pre):gcc 
Requires(post):chkconfig     
Provides:Monitor 
 
%description 
 Zabbix is the ultimate open source availability and performance monitoring solution. Zabbix offers advanced monitoring, alerting, and visualization features today which are missing in other monitoring systems, even some of the best commercial ones 
 
%package server 
Summary:server version of zabbix 
Group: System Environment/Daemons 
Requires(post):      /sbin/chkconfig 
Requires(preun):     /sbin/chkconfig 
Requires(preun):     /sbin/service 
Requires(postun):    /sbin/service 
 
%description server 
Zabbix server common files 
 
%package agentd 
Summary:             Zabbix Agent 
Group:               Applications/Internet 
Requires(pre):       shadow-utils 
Requires(post):      /sbin/chkconfig 
Requires(preun):     /sbin/chkconfig 
Requires(preun):     /sbin/service 
Requires(postun):    /sbin/service 
 
%description agentd 
The Zabbix client agent, to be installed on monitored systems. 
 
 
%package proxy 
Summary:             Zabbix Proxy 
Group:               Applications/Internet 
Requires(pre):       shadow-utils 
Requires(post):      /sbin/chkconfig 
Requires(preun):     /sbin/chkconfig 
Requires(preun):     /sbin/service 
Requires(postun):    /sbin/service 
Requires:            fping 
 
%description proxy 
The Zabbix proxy 
 
 
%package web 
Summary:             Zabbix Web 
Group:               Applications/Internet 
BuildArch:           noarch 
Requires(pre):       shadow-utils 
Requires(post):      /sbin/chkconfig 
Requires(preun):     /sbin/chkconfig 
Requires(preun):     /sbin/service 
Requires(postun):    /sbin/service 
Requires:            dejavu-sans-fonts 
 
%description web 
The Zabbix web 
 
 
%prep 
%setup -q 
 
%build 
common_flags=" 
     --enable-dependency-tracking 
     --enable-proxy   
     --enable-agent  
     --enable-ipv6 
     --with-net-snmp 
     --with-libcurl 
     --disable-java 
     --sysconfdir=%{_sysconfdir}/zabbix 
     --datadir=%{_sharedstatedir} 
     " 
%configure $common_flags --enable-server --with-mysql  --with-cc-opt="%{optflags} $(pcre-config --cflags)" 
make %{?_smp_mflags} 
 
 
#./configure --prefix=/usr/local --sysconfdir=/etc/zabbix --libdir=/usr/lib --mandir=/usr/share/man   --enable-proxy  --enable-agent --with-sqlite3 
#make %{?_smp_mflags} 
 
 
%install 
%{__rm} -rf $RPM_BUILD_ROOT 
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} 
#%{__make} DESTDIR=%{buildroot} install 
 
%{__install} -d %{buildroot}%{_sbindir} 
%{__install} -d %{buildroot}%{_sysconfdir}/rc.d/init.d 
%{__install} -d %{buildroot}%{_datadir}/%{name} 
%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/scripts 
%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/zabbix_agentd.conf.d 
%{__install} -d %{buildroot}%{_mandir}/man1/ 
%{__install} -d %{buildroot}%{_mandir}/man8/ 
%{__install} -d %{buildroot}%{_localstatedir}/log/%{name} 
%{__install} -d %{buildroot}%{_localstatedir}/run/%{name} 
%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/externalscripts 
%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/alertscripts 
%{__install} -d %{buildroot}%{_datadir}/%{name} 
 
%{__make} DESTDIR=$RPM_BUILD_ROOT install 
 
 
#%{__mkdir} -p $RPM_BUILD_ROOT%{_initrddir} 
%{__install} -m 755 misc/init.d/fedora/core/zabbix_agentd   $RPM_BUILD_ROOT%{_initrddir}/zabbix_agentd 
%{__install} -m 755 misc/init.d/fedora/core/zabbix_server   $RPM_BUILD_ROOT%{_initrddir}/zabbix_server 
%{__install} -m 755 misc/init.d/fedora/core/zabbix_server    $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 
%{__mv}  frontends/php $RPM_BUILD_ROOT/%{_datadir}/zabbix 
%{__sed} -i "s@BINARY_NAME=zabbix_server@BINARY_NAME=zabbix_proxy@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 
%{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_server 
%{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_agentd 
%{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 
 
install -m 0755 -p src/zabbix_server/zabbix_server $RPM_BUILD_ROOT%{_sbindir}/ 
install -m 0755 -p src/zabbix_proxy/zabbix_proxy $RPM_BUILD_ROOT%{_sbindir}/ 
install -m 0755 -p src/zabbix_get/zabbix_get $RPM_BUILD_ROOT%{_sbindir}/ 
install -m 0755 -p src/zabbix_sender/zabbix_sender $RPM_BUILD_ROOT%{_sbindir}/ 
install -m 0755 -p src/zabbix_agent/zabbix_agent $RPM_BUILD_ROOT%{_sbindir}/ 
install -m 0755 -p src/zabbix_agent/zabbix_agentd $RPM_BUILD_ROOT%{_sbindir}/ 
install -m 0644 -p conf/zabbix_server.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
install -m 0644 -p conf/zabbix_agent.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
install -m 0644 -p conf/zabbix_agentd.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
install -m 0644 -p conf/zabbix_proxy.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
install -m 0644 -p man/zabbix_agentd.man  $RPM_BUILD_ROOT%{_mandir}/man8/zabbix_agentd.8 
install -m 0644 -p man/zabbix_server.man $RPM_BUILD_ROOT%{_mandir}//man8/zabbix_server.8 
install -m 0644 -p man/zabbix_proxy.man  $RPM_BUILD_ROOT%{_mandir}/man8/zabbix_proxy.8 
install -m 0644 -p man/zabbix_get.man    $RPM_BUILD_ROOT%{_mandir}/man1/zabbix_get.1 
install -m 0644 -p man/zabbix_sender.man $RPM_BUILD_ROOT%{_mandir}/man1/zabbix_sender.1 
 
%{__tar} xf %{SOURCE1} -C $RPM_BUILD_ROOT%{_sysconfdir}/%{name} 
install -m 0644 -p %{SOURCE2}  $RPM_BUILD_ROOT/%{_datadir}/%{name} 
install -d $RPM_BUILD_ROOT/%{_datadir}/%{name}/database/mysql/ 
install -m 0644 -p database/mysql/*  $RPM_BUILD_ROOT/%{_datadir}/%{name}/database/mysql/ 
sed -i \ 
    -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_agentd.pid|g' \ 
    -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_agentd.log|g' \ 
    -e '/# UnsafeUserParameters=0/aUnsafeUserParameters=1\n' \ 
    -e '/# Include.*zabbix_agentd.conf.d\//aInclude=\/etc\/zabbix\/zabbix_agentd.conf.d\/\n' \ 
    -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 
    -e 's|/usr/local|/usr|g' \ 
     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_agentd.conf 
 
sed -i \ 
    -e 's|/usr/local|/usr|g' \ 
    -e '/# UnsafeUserParameters=0/aUnsafeUserParameters=1\n' \ 
    -e 's@# Include=/usr/etc/zabbix_agentd.conf.d@Include=/etc/zabbix/zabbix_agentd.conf.d@g' \ 
     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_agent.conf 
 
sed -i \ 
    -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_server.pid|g' \ 
    -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_server.log|g' \ 
    -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 
    -e 's|^DBUser=root|DBUser=zabbix|g' \ 
    -e '/# DBPassword=/aDBPassword=zabbix\n' \ 
    -e 's|# DBSocket=/tmp/mysql.sock|DBSocket=%{_sharedstatedir}/mysql/mysql.sock|g' \ 
    -e 's|# ExternalScripts=\${datadir}/zabbix/externalscripts|ExternalScripts=%{_sysconfdir}/%{name}/externalscripts|' \ 
    -e 's|/usr/local|/usr|g' \ 
     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_server.conf 
 
sed -i \ 
    -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_proxy.pid|g' \ 
    -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_proxy.log|g' \ 
    -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 
    -e 's|^DBUser=root|DBUser=zabbix|g' \ 
    -e '/# DBPassword=/aDBPassword=zabbix\n' \ 
    -e 's|# DBSocket=/tmp/mysql.sock|DBSocket=%{_sharedstatedir}/mysql/mysql.sock|g' \ 
    -e 's|# ExternalScripts=\${datadir}/zabbix/externalscripts|ExternalScripts=%{_sysconfdir}/%{name}/externalscripts|' \ 
    -e 's|/usr/local|/usr|g' \ 
     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_proxy.conf 
 
%clean 
%{__rm} -rf $RPM_BUILD_ROOT 
 
 
%files server 
%defattr(-,root,root,-) 
%doc 
%attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 
%attr(0775,root,zabbix)   %dir %{_localstatedir}/run/%{name} 
%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_server.conf 
%config(noreplace)  %{_sysconfdir}/%{name}/scripts 
%{_sbindir}/zabbix_sender 
%{_sbindir}/zabbix_server 
%{_sbindir}/zabbix_get 
 
%{_initrddir}/zabbix_server 
 
%config(noreplace) %{_sysconfdir}/%{name}/externalscripts 
%config(noreplace) %{_sysconfdir}/%{name}/alertscripts 
 
%{_mandir}/man8/zabbix_server.8* 
%{_mandir}/man1/zabbix_get.1* 
%{_mandir}/man1/zabbix_sender.1* 
 
%files agentd 
%defattr(-,root,root,-) 
%doc 
%attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 
%attr(0775,root,zabbix) %dir %{_localstatedir}/run/%{name} 
%attr(0775,root,zabbix) %dir %{_sysconfdir}/%{name}/zabbix_agentd.conf.d 
%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_agent.conf 
%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_agentd.conf 
%config(noreplace)  %{_sysconfdir}/%{name}/scripts 
%{_sbindir}/zabbix_sender 
%{_sbindir}/zabbix_agent 
%{_sbindir}/zabbix_agentd 
%{_sbindir}/zabbix_get 
%attr(0755,root,zabbix) %{_sysconfdir}/%{name}/scripts/* 
%attr(0755,root,zabbix) %{_sysconfdir}/%{name}/zabbix_agentd.conf.d/* 
 
%{_initrddir}/zabbix_agentd 
 
#%{_localstatedir}/run/%{name} 
#%{_localstatedir}/log/%{name} 
%config(noreplace) %{_sysconfdir}/%{name}/zabbix_agentd.conf.d 
 
%{_mandir}/man8/zabbix_agentd.8* 
%{_mandir}/man1/zabbix_get.1* 
%{_mandir}/man1/zabbix_sender.1* 
 
 
%files proxy 
%defattr(-,root,root,-) 
%doc 
%attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 
%attr(0775,root,zabbix)   %dir %{_localstatedir}/run/%{name} 
%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_proxy.conf 
%config(noreplace)  %{_sysconfdir}/%{name}/scripts 
%{_sbindir}/zabbix_proxy 
%{_initrddir}/zabbix_proxy 
%{_mandir}/man8/zabbix_proxy.8* 
#%{_localstatedir}/run/%{name} 
#%{_localstatedir}/log/%{name} 
%config(noreplace) %{_sysconfdir}/%{name}/externalscripts 
%config(noreplace) %{_sysconfdir}/%{name}/alertscripts 
 
%files web 
%defattr(-,root,root,-) 
%config(noreplace) %{_datadir}/%{name}/* 
 
%post server 
if [ $1 -eq 1 ]; then 
/sbin/chkconfig zabbix_server on 
fi 
 
%post agentd 
if [ $1 -eq 1 ]; then 
sed -i "s@Hostname=Zabbix server@Hostname=$HOSTNAME@g" /etc/zabbix/zabbix_agentd.conf 
getent group zabbix >/dev/null || groupadd -r  zabbix 
getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 
/sbin/chkconfig zabbix_agentd on 
/sbin/service zabbix_agentd start 
chown root:zabbix /bin/netstat 
chmod 4755 /bin/netstat 
fi 
 
%post proxy 
if [ $1 -eq 1 ]; then 
/sbin/chkconfig zabbix_proxy on 
fi 
 
%post web 
mv %{_datadir}/%{name}/php/* %{_datadir}/%{name} 
rm -rf %{_datadir}/%{name}/php 
 
[ -d "/etc/http/conf.d" ] &&  cp %{_datadir}/%{name}/conf/zabbix-web.conf /etc/http/conf.d &&chown -R apache.apache  %{_datadir}/%{name} && cat <<EOF 
-------------------------------------------------------- 
   you installed Apache Server,the zabbix-web.conf configuration file in /etc/http/conf.d 
-------------------------------------------------------- 
EOF 
[ -d "/etc/http/conf.d" ] || cat <<EOF 
------------------------------------------------------------------------------------------- 
   you should configure Web Server,the web file in %{_datadir}/%{name} 
------------------------------------------------------------------------------------------- 
EOF 
#then 
#mv %{_datadir}/%{name} /var/www/html/  
 cat <<EOF 
--------------------------------------------------------------------------------------------- 
   Author:itnihao    Mail:[email protected]    Blog: http://itnihao.blog.51cto.com 
   you can configure web server on directory /usr/share/zabbix 
   if your web server is Apache,you can use the /etc/httpd/conf.d/zabbix-web.conf file to  
   start your web server,and others you must configure your web server 
   to running the server and web, you will install packages; 
   yum  install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel 
    #setting /etc/php.ini for zabbix 
    sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g"        /etc/php.ini 
    sed -i "s#max_execution_time = 30#max_execution_time = 300#g"       /etc/php.ini 
    sed -i "s#post_max_size = 8M#post_max_size = 32M#g"                 /etc/php.ini 
    sed -i "s#max_input_time = 60#max_input_time = 300#g"               /etc/php.ini 
    sed -i "s#memory_limit = 128M#memory_limit = 128M#g"                /etc/php.ini 
    sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 2\n" /etc/php.ini 
    #config apache 
    sed -i "s/DirectoryIndex index.html index.html.var/DirectoryIndex index.php index.html index.html.var/g" /etc/httpd/conf/httpd.conf 
    sed -i "s/ServerTokens OS/ServerTokens Prod/g"  /etc/httpd/conf/httpd.conf 
    #create mysql database to zabbix 
    service mysqld start 
    chkconfig mysqld on 
    mysqladmin -u root password  'mysqlpass' 
    mysql -uroot -pmysqlpass -e "create database zabbix character set utf8" 
    mysql -uroot -pmysqlpass -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'" 
    mysql -uroot -pmysqlpass -e "flush privileges" 
 
    #source zabbix database 
    cd /usr/share/zabbix 
    mysql -uzabbix -pzabbix zabbix < ./database/mysql/schema.sql 
    mysql -uzabbix -pzabbix zabbix < ./database/mysql/images.sql 
    mysql -uzabbix -pzabbix zabbix < ./database/mysql/data.sql 
---------------------------------------------------------------------------------------------- 
EOF 
#fi 
 
 
%pre server 
#add zabbix to services 
grep zabbix /etc/services 
[ "$?" != 0 ] && cat >> /etc/services <<EOF 
zabbix-agent    10050/tcp               #Zabbix Agent 
zabbix-agent    10050/udp               #Zabbix Agent  
zabbix-trapper  10051/tcp               #Zabbix Trapper  
zabbix-trapper  10051/udp               #Zabbix Trapper 
EOF 
# Add the "zabbix" user 
getent group zabbix >/dev/null || groupadd -r  zabbix 
getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 
 
%pre agentd 
#add zabbix to services 
grep zabbix /etc/services 
[ "$?" != 0 ] && cat >> /etc/services <<EOF 
zabbix-agent    10050/tcp               #Zabbix Agent 
zabbix-agent    10050/udp               #Zabbix Agent  
zabbix-trapper  10051/tcp               #Zabbix Trapper  
zabbix-trapper  10051/udp               #Zabbix Trapper 
EOF 
# Add the "zabbix" user 
getent group zabbix >/dev/null || groupadd -r  zabbix 
getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 
 
 
%preun server 
if [ "$1" = 0 ] 
then 
  /sbin/service zabbix_server stop >/dev/null 2>&1 
  /sbin/chkconfig --del zabbix_server 
fi 
 
%preun proxy 
if [ "$1" = 0 ] 
then 
  /sbin/service zabbix_proxy stop >/dev/null 2>&1 
  /sbin/chkconfig --del zabbix_proxy 
fi 
 
%preun agentd 
if [ "$1" = 0 ] 
then 
  /sbin/service zabbix_agentd stop >/dev/null 2>&1 
  /sbin/chkconfig --del zabbix_agentd 
fi 
 
%changelog 
* Fri Jan 25 2013  First version is build ok <[email protected]> 
- 2.0.4
Copyright © Linux教程網 All Rights Reserved