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

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