# cat /etc/redhat-release linux
CentOS release 5.8 (Final) sql
# uname -r vim
2.6.18-308.el5 cookie
# uname -m 運維
x86_64 ide
# ls /usr/src post
debug kernels redhat 測試
# ls /usr/src/redhat/ 網站
BUILD RPMS SOURCES SPECS SRPMS ui
# mkdir -p /home/zxp/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# cat haproxy.spec
Summary: HA-Proxy is a TCP/HTTP reverse proxy for high availability environments #軟件摘要信息
Name: haproxy #軟件名稱
Version: 1.4.22 #軟件版本
Release: 20130106_hexun_as5 #軟件分支版本
License: GPL #軟件版權
Group: System Environment/Daemons #軟件所屬分類
URL: http://haproxy.1wt.eu/ #軟件主頁
Source0: http://haproxy.1wt.eu/download/1.4/src/%{name}-%{version}.tar.gz #源碼位置
BuildRoot: %{_tmppath}/%{name}-%{version}-root #安裝目錄
BuildRequires: pcre-devel #編譯依賴軟件包
Requires: /sbin/chkconfig, /sbin/service #安裝依賴軟件包
%description #軟件詳細的描述信息
HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. Indeed, it can:
- route HTTP requests depending on statically assigned cookies
- spread the load among several servers while assuring server persistence
through the use of HTTP cookies
- switch to backup servers in the event a main one fails
- accept connections to special ports dedicated to service monitoring
- stop accepting connections without breaking existing ones
- add/modify/delete HTTP headers both ways
- block requests matching a particular pattern
It needs very little resource. Its event-driven architecture allows it to easily
handle thousands of simultaneous connections on hundreds of instances without
risking the system's stability.
# %prep定義了構建前要作的準備,一般是%setup定義如何解包
%prep
%setup -q
# We don't want any perl dependecies in this RPM:
%define __perl_requires /bin/true #定義不使用perl依賴關係
%build #編譯源碼命令,一般是./configure && make,根據具體包安裝方法而定
%{__make} ARCH=%{_target_cpu} TARGET=linux26
%install #安裝階段
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%{__install} -d %{buildroot}%{_sbindir}
%{__install} -d %{buildroot}%{_sysconfdir}/rc.d/init.d
%{__install} -d %{buildroot}%{_sysconfdir}/%{name}
%{__install} -d %{buildroot}%{_mandir}/man1/
%{__install} -s %{name} %{buildroot}%{_sbindir}/
%{__install} -c -m 644 examples/%{name}.cfg %{buildroot}%{_sysconfdir}/%{name}/
%{__install} -c -m 755 examples/%{name}.init %{buildroot}%{_sysconfdir}/rc.d/init.d/%{name}
%{__install} -c -m 755 doc/%{name}.1 %{buildroot}%{_mandir}/man1/
%clean #清理BUILD目錄階段
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%post #安裝後製定的腳本
/sbin/chkconfig --add %{name}
%preun #卸載前執行的腳本
if [ $1 = 0 ]; then
/sbin/service %{name} stop >/dev/null 2>&1 || :
/sbin/chkconfig --del %{name}
fi
%postun #卸載後執行的腳本
if [ "$1" -ge "1" ]; then
/sbin/service %{name} condrestart >/dev/null 2>&1 || :
fi
%files #文件列表,主要是設置安裝rpm包後的文件、目錄屬性
%defattr(-,root,root) #定義默認屬性
%doc CHANGELOG TODO examples/*.cfg doc/haproxy-en.txt doc/haproxy-fr.txt doc/architecture.txt doc/configuration.txt #指定軟件文檔
%doc %{_mandir}/man1/%{name}.1* #指定man幫助文檔
%attr(0755,root,root) %{_sbindir}/%{name} #單獨指定目錄屬性
%dir %{_sysconfdir}/%{name} #定義軟件安裝目錄
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.cfg #單獨指定文件屬性
%attr(0755,root,root) %config %{_sysconfdir}/rc.d/init.d/%{name} #單獨指定文件屬性
%changelog #軟件升級日誌
* Tue Aug 14 2012 Willy Tarreau <w@1wt.eu>
- updated to 1.4.22
…………略………………
* Thu Oct 16 2003 Simon Matter <simon.matter@invoca.ch>
- initial build
# cd SRPMS/
# wget http://1wt.eu/tools/haproxy/src/devel/haproxy-1.2.3-1.src.rpm
# rpm -ivh haproxy-1.2.3-1.src.rpm
1:haproxy ########################################### [100%]
# ls /usr/src/redhat/{SOURCES,SPECS}
/usr/src/redhat/SOURCES:
haproxy-1.2.3.tar.gz
/usr/src/redhat/SPECS:
haproxy.spec
# cd /usr/src/redhat/SPECS
# cd /usr/src/redhat/SPECS
# cp haproxy.spec haproxy.spec_bak$(date +%F)
# ls
haproxy.spec haproxy.spec_bak2013-01-06
# tar zxf haproxy-1.4.22.tar.gz
# cd haproxy-1.4.22
# ll haproxy.spec
-rw-rw-r-- 1 root root 7442 Aug 14 15:09 haproxy.spec
#cd haproxy-1.4.22/examples/
# ls
haproxy.spec
# cp haproxy.spec /usr/src/redhat/SPECS/
# cp haproxy.spec haproxy.spec.$(date +%F)
# pwd /usr/src/redhat/SPECS
# vim haproxy.spec
[root@study02 SPECS]# diff haproxy.spec haproxy.spec.2013-01-07
4c4
< Release: 20130106_hexun_as5
---
> Release: 1
36c36
< %{__make} ARCH=%{_target_cpu} TARGET=linux26
---
> %{__make} USE_PCRE=1 DEBUG="" ARCH=%{_target_cpu} TARGET=linux26
# pwd
/usr/src/redhat/SOURCES
# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz
# ls haproxy-1.4.22.tar.gz
# yum install rpm-build -y
# yum -y install pcre-devel
# rpmbuild -v -ba SPECS/haproxy.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.44698
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /usr/src/redhat/BUILD
+ rm -rf haproxy-1.4.22
+ /bin/gzip -dc /usr/src/redhat/SOURCES/haproxy-1.4.22.tar.gz
+ tar -xf -
+ STATUS=0
…………略………………
Wrote: /usr/src/redhat/SRPMS/haproxy-1.4.22-20130106_hexun_as5.src.rpm
Wrote: /usr/src/redhat/RPMS/x86_64/haproxy-1.4.22-20130106_hexun_as5.x86_64.rpm
Wrote: /usr/src/redhat/RPMS/x86_64/haproxy-debuginfo-1.4.22-20130106_hexun_as5.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.75459
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd haproxy-1.4.22
+ '[' /var/tmp/haproxy-1.4.22-root '!=' / ']'
+ /bin/rm -rf /var/tmp/haproxy-1.4.22-root
+ exit 0 #注意輸出status爲0 即建立過程錯誤
# rpm -qpl /usr/src/redhat/RPMS/x86_64/haproxy-1.4.22-20130106_hexun_as5.x86_64.rpm
/etc/haproxy
/etc/haproxy/haproxy.cfg
/etc/rc.d/init.d/haproxy
/usr/sbin/haproxy
/usr/share/doc/haproxy-1.4.22
/usr/share/doc/haproxy-1.4.22/CHANGELOG
/usr/share/doc/haproxy-1.4.22/TODO
/usr/share/doc/haproxy-1.4.22/acl-content-sw.cfg
/usr/share/doc/haproxy-1.4.22/architecture.txt
/usr/share/doc/haproxy-1.4.22/auth.cfg
/usr/share/doc/haproxy-1.4.22/build.cfg
/usr/share/doc/haproxy-1.4.22/configuration.txt
/usr/share/doc/haproxy-1.4.22/content-sw-sample.cfg
/usr/share/doc/haproxy-1.4.22/cttproxy-src.cfg
/usr/share/doc/haproxy-1.4.22/examples.cfg
/usr/share/doc/haproxy-1.4.22/haproxy-en.txt
/usr/share/doc/haproxy-1.4.22/haproxy-fr.txt
/usr/share/doc/haproxy-1.4.22/haproxy.cfg
/usr/share/doc/haproxy-1.4.22/option-http_proxy.cfg
/usr/share/doc/haproxy-1.4.22/tarpit.cfg
/usr/share/doc/haproxy-1.4.22/test-section-kw.cfg
/usr/share/doc/haproxy-1.4.22/url-switching.cfg
/usr/share/man/man1/haproxy.1.gz
# rpm -qpi /usr/src/redhat/RPMS/x86_64/haproxy-1.4.22-20130106_hexun_as5.x86_64.rpm
Name : haproxy Relocations: (not relocatable)
Version : 1.4.22 Vendor: (none)
Release : 20130106_hexun_as5 Build Date: Mon 07 Jan 2013 09:36:21 AM CST
Install Date: (not installed) Build Host: study02
Group : System Environment/Daemons Source RPM: haproxy-1.4.22-20130106_hexun_as5.src.rpm
Size : 1275757 License: GPL
Signature : (none)
URL : http://haproxy.1wt.eu/
Summary : HA-Proxy is a TCP/HTTP reverse proxy for high availability environments
Description :
HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. Indeed, it can:
- route HTTP requests depending on statically assigned cookies
- spread the load among several servers while assuring server persistence
through the use of HTTP cookies
- switch to backup servers in the event a main one fails
- accept connections to special ports dedicated to service monitoring
- stop accepting connections without breaking existing ones
- add/modify/delete HTTP headers both ways
- block requests matching a particular pattern
It needs very little resource. Its event-driven architecture allows it to easily
handle thousands of simultaneous connections on hundreds of instances without
risking the system's stability.
[root@study01 tools]# rpm -ivh haproxy-1.4.22-20130106_hexun_as5.x86_64.rpm
Preparing... ########################################### [100%]
1:haproxy ########################################### [100%]
[root@study01 tools]# ls
haproxy-1.4.22-20130106_hexun_as5.x86_64.rpm
[root@study01 tools]# ls /etc/haproxy/ #安裝目錄及主配置文件
haproxy.cfg
[root@study01 tools]# ll /etc/rc.d/init.d/haproxy #服務啓動文件
-rwxr-xr-x 1 root root 2553 Jan 7 09:36 /etc/rc.d/init.d/haproxy
[root@study01 tools]# ll /etc/init.d/haproxy
-rwxr-xr-x 1 root root 2553 Jan 7 09:36 /etc/init.d/haproxy
[root@study01 tools]# rpm -qf /etc/init.d/haproxy #查看軟件所屬軟件包
haproxy-1.4.22-20130106_hexun_as5