citadel学习笔记3——模块列表及编译

citadel提供了很多的子模块,其功能很全,子模块也很多。编译这方面,由于先前的ubuntu下安装了,所以最开始编译是根据ubuntu的配置来编译的。

模块

有一些应该是默认的模块,比如说netconfig模块,必须得在最后才加载的。而citserver control modules euidindex file_ops msgbase room_ops user_ops nttlist database等这些模块应该是citadel的基础模块了。还有一些就是动态的模块,基本上有一大半都是属于动态的模块。这些模块是通过shell脚本查找出来的模块。所以编译的时候,如果你有更新了模块中的文件,那么就需要执行下

./scripts/mk_module_init.sh

这样,你添加或删除的文件,才会被更新,该脚本主要是用于生成Make_modules,Make_sources,modules_init.c,modules_init.h,modules_upgrade.c这几个文件的。

8.24版本的模块列表如下:

模块 源码 备注
citserver citserver.c
control control.c
modules serv_extensions.c
euidindex euidindex.c
file_ops file_ops.c
msgbase msgbase.c
room_ops room_ops.c
user_ops user_ops.c
nttlist nttlist.c
database database.c
autocompletion serv_autocompletion.c
bio serv_bio.c
blog serv_blog.c
c_ares_client serv_c-ares-dns.c c-ares
calendar serv_calendar.c
checkpoint serv_checkpoint.c
virus serv_virus.c
dspam serv_dspam.c
event_client serv_eventclient.c
expire serv_expire.c
extnotify extnotify_main.c
fulltext serv_fulltext.c
imap serv_imap.c
inetcfg serv_inetcfg.c
instmsg serv_instmsg.c
listsub serv_listsub.c
managesieve serv_managesieve.c
migrate serv_migrate.c
mrtg serv_mrtg.c
netfilter serv_netfilter.c
network_spool serv_netspool.c
network serv_network.c
network_client serv_networkclient.c networkclient
newuser serv_newuser.c
notes serv_notes.c
openid_rp serv_openid_rp.c
pop3 serv_pop3.c
pop3client serv_pop3client.c
roomchat serv_roomchat.c
rssparser rss_atom_parser.c
rssclient serv_rssclient.c
rwho serv_rwho.c
sieve serv_sieve.c
smtp serv_smtp.c
smtp_eventclient serv_smtpeventclient.c smtpeventclient
smtp_queu serv_smtpqueue.c smtpeventclient,应该是代码上有错误
spam serv_spam.c
test serv_test.c
urldeshortener serv_expand_shorter_urls.c UrlShortener
vcard serv_vcard.c
wiki serv_wiki.c
xmpp serv_xmpp.c
netconfig netconfig.c

 

编译

上文说了,最初是根据ubuntu的配置来编译的,ubuntu的配置又是如何?其实ubuntu是自带命令编译的。可以通过apt-get source下载源码,或者直接使用apt-build进行下载源码编译,我是比较喜欢apt-get的方式,因为可以在随意一个目录下进行编译,虽然可能步骤比较多一些。其实apt-build也可以配置编译的目录就是了。

首先安装编译所需的deb包,执行下面的命令:

sudo apt-get build-dep citadel

这样就会把编译citadel所需的所有依赖库,头文件都给安装上去了。接下来,就是需要下载源码及编译了。

apt-get source citadel-server # 下载源码
cd citadel-8.24/
dpkg-buildpackage # 编译安装包

也就是最后是通过dpkg-buildpackage来编译的,编译的话,主要还是注重过程吧,虽然我们要的是结果,但是编译log还是很重要的。这里的话,主要是要看看其是如何配置参数的,虽然大部分可能都是直接运行./configure就可以了。但是很经常额外的参数,是很重要的。这里主要是打算自编译的配置能够与ubuntu二进制包的配置是一样的。所以就是要拷贝下./configure的参数了。

make[1]: 正在进入目录 `/tmp/citadel-8.24'
dh_testdir
CFLAGS="`dpkg-buildflags --get CFLAGS` -Wall -O2" CPPFLAGS="`dpkg-buildflags --get CPPFLAGS`" LDFLAGS="`dpkg-buildflags --get LDFLAGS`" ./configure \
                --prefix=/var/lib/citadel \
                --with-datadir=/var/lib/citadel \
                --with-helpdir=/usr/share/citadel-server \
                --with-staticdatadir=/etc/citadel \
                --with-spooldir=/var/spool/citadel \
                --with-sysconfdir=/etc/citadel \
                --with-rundir=/var/run/citadel \
                --with-docdir=/usr/share/doc/citadel-doc/ \
                --with-ssldir=/etc/ssl/citadel/ \
                --with-utility-bindir=/usr/lib/citadel-server/ \
                --with-autosysconfdir=/var/lib/citadel/data/ \
                --with-pam \
                --with-db \
                --with-zlib \
                --with-ldap \
                --with-libical \
                --with-libsieve \
                --enable-debug

看到这里,就知道了吧,其默认是有开启debug的,并且一些安装的目录,比如简单的说,pid文件保存在/var/run/citadel目录中了,配置文件在/etc/citadel中,ssl文件目录在哪等。所以log对于一些配置文件的查找,还是很重要的。编译完,会生成对应的deb的包,但是不会安装到系统中去,这点也是我喜欢的地方,有时候,我们要自己修改调试的话,用某个目录就行了,并不要去影响系统的配置不是?

之后,可以编译了,又有源码了,那么就可以修改其中的代码,阅读代码有不懂的,也可以加加log打印之类的了。
初步的编译,及模块列表,只是作为方便自己查阅的吧。现在还是并没有做怎么样的深入,毕竟我主要只是为了学习其中的XMPP模块,之后将会以XMPP模块为主的学习笔记了。

 

转载请注明: 转载自elkPi.com

本文链接地址: citadel学习笔记3——模块列表及编译

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top