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——模块列表及编译