kamailio/openser/opensips 生成RPM包/RPM打包


使用RPM包進行安裝部署可以節省許多時間,一些環境的配置都可以使用腳本完成,這樣部署一臺proxy服務器兩步走,腳本配環境,RPM裝程序。先說說標準流程,然後再說下如何加入自己開發的模塊。

一.RPM環境配置
安裝rpmforge,根據系統架構選擇32位版還是64位版。

安裝DAG's GPG key

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt.

安裝下載的RPM包

rpm -ivh rpmforge-release-0.5.2-2.el5.rf.*.rpm

安裝rpm-build,把命令複製來一起執行就行了。

yum install rpm-build
yum install redhat-rpm-config
cd
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

二.進行kamailio打包

cd kamailio源碼目錄
make FLAVOUR=kamailio tar

複製 Kamailio Spec Files

kamailio.default裏面的參數可以把共享內存和私有內存調大一些。

cd
mv kamailio-3.1/kamailio/kamailio-3.1.2_src.tar.gz rpmbuild/SOURCES/
cp kamailio-3.1/kamailio/pkg/kamailio/rpm/kamailio.init rpmbuild/SOURCES/
cp kamailio-3.1/kamailio/pkg/kamailio/rpm/kamailio.default rpmbuild/SOURCES/
cp kamailio-3.1/kamailio/pkg/kamailio/rpm/kamailio.spec.CentOS rpmbuild/SPECS/

安裝kamailio依賴

yum install make
yum install gcc
yum install flex
yum install bison
yum install mysql-devel
yum install openssl-devel
yum install pcre-devel
yum install postgresql-devel
yum install unixODBC-devel
yum install libxml2-devel
yum install radiusclient-ng-devel
yum install lm_sensors-devel
yum install net-snmp-devel
yum install curl-devel
yum install expat-devel
yum install libconfuse-devel
yum install libpurple-devel
yum install openldap-devel
yum install mod_perl-devel
yum install lua-devel
yum install python-devel
yum install yum install

現在生成RPM包

cd ~/rpmbuild/SPECS
rpmbuild -ba kamailio.spec.CenOS

等吧,這是一個比較費時的過程,當你看到以下信息就成功了。

...
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/kamailio-3.1.2-buildroot
Wrote: /home/cezar/rpmbuild/SRPMS/kamailio-3.1.2-0.src.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-mysql-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-postgres-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-unixodbc-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-utils-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-cpl-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-radius-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-snmpstats-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-presence-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-xmpp-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-tls-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-carrierroute-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-purple-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-ldap-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-perl-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-lua-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-python-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-geoip-3.1.2-0.i386.rpm
Wrote: /home/cezar/rpmbuild/RPMS/i386/kamailio-debuginfo-3.1.2-0.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.19156
+ umask 022
+ cd /home/cezar/rpmbuild/BUILD
+ cd kamailio-3.1.2
+ rm -rf /var/tmp/kamailio-3.1.2-buildroot
+ exit 0
三.添加自己開發的模塊
這個主要是修改spec文件,比如我完成一個叫test的模塊開發,而這個test的模塊依賴了其他第三方庫,比如protobuf。
1.先要讓rpm會編譯這個庫
vi kamailio.spec.CenOS
在文件中找 make FLAVOUR=kamailio cfg 這一行,然後在此行最後加上include_modules="test"
make FLAVOUR=kamailio cfg prefix=/usr cfg_prefix=$RPM_BUILD_ROOT basedir=$RPM_BUILD_ROOT cfg_target=/%{_sysconfdir}/kamailio/ modules_dirs="modules modules_k" include_modules="db_mysql test"
2.讓rpm包打包新增的庫so
vi kamailio.spec.CenOS
找到這一段:%dir %{_libdir}/kamailio  從此開始下面都是庫文件,在最後面加入以下行:
/usr/lib64/kamailio/test.so
3.解決依賴問題,一個簡單+暴力的方法就是直接把這種依賴去掉。安裝的時候就不會提示依賴問題,但是還得提前把依賴的那些庫裝好了程序才能運行。
vi kamailio.spec.CenOS
找到Conflicts開頭的行,然後新增一行加入以下內容
AutoReq: no
參考文檔:

kamailio/opensips 技術交流QQ羣:118791050

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章