[CalendarServer-users] 'Run' script crashes

mwacker at linagora.com mwacker at linagora.com
Wed Jul 4 09:33:49 PDT 2007

> Hello,
> I am trying to get calendar server to
> run on a CentOS Linux server.  I am
> getting a crash with the run script.
> The logs are attached.
> I see the errors...
> [...]
>  File
> "/home/caldav/src/calendar-server/pysqlite-2.3.2/build/lib.linux-i686-2.5/pysqlite2/dbapi2.py",
> line 27, in <module>
>     from pysqlite2._sqlite import *
> exceptions.ImportError: No module named _sqlite
> [...]

This probably means sqlite build went wrong.
Follow Rem1 in my Linux Howto (joined).

> and...
> [...]
>  File
> "/home/caldav/src/calendar-server/Twisted/twisted/python/components.py",
> line 87, in registerAdapter
>     raise ValueError("an adapter (%s) was already
> registered." % (factory, ))
> exceptions.ValueError: an adapter
> (twisted.internet.protocol.ProtocolToConsumerAdapter)
> was already registered.
> [...]
Fot this, i don't know.
Hopelessly, it's a side effect of previous error.

> ...early on.  Are those the culprits?
> Best regards,
> Kervin
> _______________________________________________
> calendarserver-users mailing list
> calendarserver-users at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/calendarserver-users
-------------- next part --------------

Build and run Darwin Calendar Server (DCS) on Linux...

... and test it with mozilla-sunbird

Introduction :
Here is how i get DCS working. This is probably not the best way to set it, neither the more secure, but i'm just able to connect Sunbird to it, with elementary events management.

I used admin account to simplify tests.

1- Get and build the source

$> svn checkout http://svn.macosforge.org/repository/calendarserver/CalendarServer/trunk CalendarServer

The project contains some scripting to download dependencies needed for the server to run :

$>cd CalendarServer
$>./run -s

This will download and build DCS dependencies in the same directory where DCS resides

$> ls ..
CalendarServer    PyKerberos     pysqlite-2.3.2       Twisted  xattr
pydirector-1.0.0  pyOpenSSL-0.6  python-dateutil-1.1  vobject  ZopeInterface-3.1.0c1

Rem1 : If something goes wrong during this dependencies build phase, remove the directory where the build error occured and then do "./run -s" again".

Rem2 : if you have python-xattr package installed on your linux distribution, you'd better remove it, because DCS use a particular version (which is downloaded by "./run -s").

2- Configure and run

The most difficult (not so difficult:) thing to do before having DCS running on Linux is to get a File System supporting eXtend ATTRibutes mounted, where to put DCS datas.

2.1 Verify Kernel capabalities about eXtend ATTRibutes.

First, Verify that your Linux Kernel is able to manage such File System.
On my Ubuntu box i do it like this :

$> grep XATTR /boot/config-2.6.17-10-generic
# CONFIG_CIFS_XATTR is not set

This means i can mount ext2, ext3 and REISER File System with support of eXtended ATTRibutes.

Rem 1 : On other distribution the checking is done by command like :
$> zgrep ATTR /proc/config.gz
With the same type of output.

Rem 2 : If your kernel does not support XATTR (CONFIG_..._XATTR=n), you need to get or build one that do. But i will not explain this here.

2.2 Mount an XATTR file system

In this example i'm mounting the /dev/sda3 partition on  the /mnt mounting point with support for user eXtended ATTRibutes.
$> sudo vi /etc/fstab

Add the line for your partition :
/dev/sda3       /mnt/           ext3    user,rw,user_xattr

$> sudo mount /mnt

Add a directory where to put dcs data :
$> sudo mkdir /mnt/dcs-data
$> sudo chown $USER:$USER /mnt/dcs-data/
Last command will enable caldavd daemon to read/write in his data directory (as soon as it's launched by $USER). 

2.3 Configure DCS to put his datas on the right partition

In DCS source directory, copy and edit the developpement config file:
$> cp ./conf/caldavd-test.plist ./conf/caldavd-dev.plist
$> vi ./conf/caldavd-dev.plist

Look for the string element specifying where to put data :
And change it to point to a directory of your XATTR mounting point :

3- Run DCS

$> ./run
2007/01/28 14:03 +0200 [-] Log opened.
2007/01/28 14:03 +0200 [-] twistd 2.4.0+r18545 (/usr/bin/python 2.4.4) starting up
2007/01/28 14:03 +0200 [-] reactor class: <class 'twisted.internet.selectreactor.SelectReactor'>
2007/01/28 14:03 +0200 [-] Setting up document root: /mnt/dcs-data
2007/01/28 14:03 +0200 [-] twisted.web2.channel.http.HTTPFactory starting on 8008
2007/01/28 14:03 +0200 [-] Starting factory <twisted.web2.channel.http.HTTPFactory instance at 0xb73d7eac>
2007/01/28 14:03 +0200 [-] twisted.web2.channel.http.HTTPFactory starting on 8443

Rem : I got an error in caldavd shell script on line 46:
CalendarServer/bin/caldavd: 46: Syntax error: Bad substitution

I just (badly) commented this line, as i don't understand what's wrong with it.

First Tests :
You should be able to access to http://localhost:8008/ with your navigator.
When asked for login, use user admin (password admin). You can browse DCS Collections

4- Connect to DCS with mozilla Sunbird

I use SunBird-0.3.
Add a calendar, of type Network/CalDAV. 
Put admin Calendar URL : http://localhost:8008/calendars/users/admin/calendar/
Enter Login/Password (admin/admin).

Try to add event in this calendar and verify in caldavd logs that everything goes fine without error.
You can see new ressources in the http://localhost:8008/calendars/users/admin/calendar/ collection by browsing it with your navigator. If you open such ressource you'll see the ICS definition of the event.

That's all for now.

Next steps would be use normal user accounts and show different sharing use cases between them, by setting different ACL scheme between them (as soon as i find a proper way to set WebDAV ACLs).

Every comments are wellcomed. Hope other people will succeed with this little howto.
If not, use Darwin Calendar User Mailing List. I'll help you (on sparse time).

Maxime Wacker 2007-01-28



More information about the calendarserver-users mailing list