(Due to Cmmj’s initial efforts an official Ubuntu wiki article has been created)
Ah… It’s a new year. Time to dust off those old forgotten projects and renew energy and see if we can get them completed. One of my projects that I started last year was to get a Family Calendar installed so that the family could use any of the PCs or Macs in the house to see our schedules. Yes, I do have a wall calendar, but where’s the fun in that?
There are a number of calendaring solutions out there – both free and paid services. None of the do everything I want, so I decided to roll my own server. To make it easier, I’d use as many tools and solutions that were standards based. Little did I know that some of the standards I was looking for had just came out. Vendors and software developers are just now writing apps that are compliant. Due in large part that I was switching most of the machines in the house to Macs, I decided to look at Apple’s (new then) Calendar Server.
Of course, Apple’s implementation, which comes free with Leopard Server, was developed for Mac OS first. It’s all python based so in theory it should work on any platform – however, you get the wonderful opportunity to troubleshoot and bang your head against the preverbal wall. And I did. Over and over. I couldn’t this thing to work to save my life! I gave up as soon as I saw a shiny object bounce across the floor and haven’t look back since.
That was until I saw this forum post in the Ubuntu discussion forums as I was doing some research on a different project. It was posted by a person named Cammj, who claimed to have successfully installed the server on an Ubuntu server. Well, this got me all tingling… someone actually took the time to work through all the issues and they were kind enough to post it on the ‘Net!! OMG! I love the ‘Net!
I don’t want to go through all the steps here for installing the server, Cammj did an excellent job in his blog. To make it more convenient, here’s the direct link: Cam’s Blog. However, as I stated in my reply to the original forum post, I did have some problems and that’s what I’ll cover here.
Some background information first before I attempted to follow Cam’s installation procedures. I’ve talked about my basic testing setup in this previous post. In this case, the new VM I setup was running Ubuntu 7.10 Gusty Gibbon. Once the server was installed, I gave the server a static IP address, fixed the /etc/apt/source.list file and then updated all included packages on the server. A couple of hundreds of megs later, I then added webmin and OpenSSH (from the Ubuntu repositories.) Once all this was done – a did a snapshot of the VM so I can start from this point in case things went squirrelly. Now I was ready!
The first time through, I follow Cam’s directions to the letter! It didn’t work. I was so disappointed, but I didn’t give up. I revert back to my previous snap shot and decided to mess around with the installation procedure. I was extremely fortunate to stumble upon the correct installation process the second time out.
What made the second time successful was that I downloaded all of the required packages separately as opposed to Cam’s all in one command (Step 4):
apt-get install curl zope3 python-xml python-pyopenssl python-dateutil
python-xattr python-pysqlite2 python-twisted python-vobject python-kerberos
I noticed that when I did an apt-get install of zope3, zope3 starting downloading and installing all of the required python packages. Instead of just trusting the installation, I continued to install the packages one at a time, in the order that Cam has listed in his command. Every python package that was ‘installed’ by the zope3 installation, was not completed. Each had addition information to be either downloaded or configured — all of which apt-get took care of. I just sat back and watched.
That was the only change I made to the installation directions and everything seem to work. Now my next job is to figure out how to manipulate the XML file that contains all the accounts and groups for the service. The Family Calendar is one step closer to being finished.