I am looking for a no-sql database to simplify the management of some data I need for a project at work. Tokyo Cabinet and MongoDB were recommended to me, but I decided I would give CouchDB a shot. I read the Erlang mailing list regularly and CouchDB is often mentioned. I also want to support software projects that use Erlang because I love working with Erlang and would love to help it spread.
Unfortunately I cannot recommend CouchDB. Trying to install its dependencies were such a mess that I am no longer going to waste time with CouchDB. Sorry guys, it looked really interesting, but I have work to do an other no-sql databases are much easier to setup.
Part of the issue is that I’m working on a Novell SLES 10 box, and as such it doesn’t get the most up-to-date packages. I don’t have the option of grabbing the latest version of Ubuntu or OpenSuSE due to audit department requirements. I’m stuck with SLES 10 for now, if I’m lucky I will be able to upgrade the server to SLES 11 one day.
However, I was able to get Erlang installed without a hitch. I have never once had an issue installing Erlang on a system: Solaris 10, Mac OS X, Windows, Ubuntu, and SLES.
sudo rpm -Uvh erlang-R13B01-13.1.x86_64.rpm (from http://software.opensuse.org)
I went ahead and ran the CouchDB configure script just to see if all of the dependencies (libcurl, ICU, SpiderMonkey, OpenSSL) were optional.
checking for JS_NewContext in -lmozjs… no
checking for JS_NewContext in -ljs… no
checking for JS_NewContext in -ljs3250… no
checking for JS_NewContext in -ljs32… no
configure: error: Could not find the js library.
Is the Mozilla SpiderMonkey library installed?
Of course not, looks like I cannot skip SpiderMonkey. And of course the Mozilla guys cannot make anything easy, I have to install Mercurial first just to get at the code. Luckily there was a package for mercurial. I think this server now has CVS, SVN, Bazaar, git and mercurial on it now.
sudo rpm -Uvh mercurial-1.8.3-45.2.x86_64.rpm
It took awhile for mecurial to clone the repistory, but it did grab everything. I also had to install autoconf-2.13, and thankfully it also had a package for SLES 10.
hg clone http://hg.mozilla.org/mozilla-central/
I threw my hands up with the error that came up when I ran gmake as directed by the install.
gmake: Entering directory `/home/ptuser/nexttick/spidermonkey/mozilla-central/js/src’
gmake -C config/ nsinstall
gmake: Entering directory `/home/ptuser/nexttick/spidermonkey/mozilla-central/js/src/config’
gcc -o host_nsinstall.o -c -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -W -pedantic -Wno-long-long -fno-strict-aliasing -pthread -pipe -DNDEBUG -DTRIMMED -g -O3 -DXP_UNIX -O3 -DUNICODE -D_UNICODE -I. -I. -I../dist/include -I../dist/include/nsprpub
gcc: no input files
gmake: *** [host_nsinstall.o] Error 1
gmake: Leaving directory `/home/ptuser/nexttick/spidermonkey/mozilla-central/js/src/config’
gmake: *** [config/nsinstall] Error 2
gmake: Leaving directory `/home/ptuser/nexttick/spidermonkey/mozilla-central/js/src’
gmake: *** [default] Error 2
I don’t fault the CouchDB guys for SpiderMonkey’s build system, but the amount of work required just to get the prerequisties for CouchDB makes it not worth my time. In the amount of time I spent tracking down packages and trying to get everything, I could have just installed SQLlite and written some code.
I’m going to give MongoDB a shot now.
UPDATE: MongoDB also depends on SpiderMonkey, so it is out the window too. I tried to install their 64-bit Linux binary, but I just got a floating-point exception. Looks like I’ll just stick with Sqlite. Besides, Sqlite3 is built into Python.