Installing Asterisk

11 December 2006

Continuing down the VoIP-experimentation route, I’ve installed Asterisk on a spare Linux box. It seemed most sensible to do it from the CVS repository, so I tried:

jura:/home/root# cd /usr/src
jura:/usr/src# mkdir asterisk
jura:/usr/src# cd asterisk
jura:/usr/src/asterisk# export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
jura:/usr/src/asterisk# cvs login

However:

jura:/usr/src/asterisk# cvs login
Logging in to :pserver:anoncvs@cvs.digium.com:2401/usr/cvsroot
CVS password:
Unknown host cvs.digium.com.
jura:/usr/src/asterisk# ping cvs.digium.com
ping: unknown host cvs.digium.com
jura:/usr/src/asterisk#

I guess they’ve moved over permanently to Subversion (which is a good thing, though it would be nice if it were more prominently documented). So:

jura:/usr/src/asterisk# svn checkout http://svn.digium.com/svn/asterisk/branches/1.2 asterisk-1.2
A  asterisk-1.2/build_tools

A  asterisk-1.2/formats/format_g726.c
A  asterisk-1.2/aescrypt.c
 U asterisk-1.2
Checked out revision 48358.
jura:/usr/src/asterisk# svn checkout http://svn.digium.com/svn/zaptel/branches/1.2 zaptel-1.2

A  zaptel-1.2/oct612x/Makefile
Checked out external at revision 12.

Checked out revision 1688.
jura:/usr/src/asterisk# svn checkout http://svn.digium.com/svn/libpri/branches/1.2 libpri-1.2

The rest of the build went reasonably easily once I started following the online instructions rather than the (admittedly literally months old) VoIP Hacks book, which omits certain bits of useful information (like the packages you need to have installed in order to make the compile work) and is clearly a bit out-of-date generally. For anyone else out there who googles for error messages to see if there’s any easy fix, if you successfully compiled and installed libpri, but then found that building zaptel crapped out with vast numbers of error messages, the last ones looking like this:

/usr/include/linux/fs.h:383: error: storage size of `i_ctime' isn't known
/usr/include/linux/fs.h:515: error: storage size of `f_owner' isn't known
zaptel.h:1115: error: storage size of `confin' isn't known
zaptel.h:1116: error: storage size of `confout' isn't known
zaptel.c:6472: error: storage size of `zt_fops' isn't known
make: *** [zaptel.o] Error 1
jura:/usr/src/asterisk/zaptel-1.2#

…or, alternatively, when building asterisk, you got the following:

checking for tgetent in -ltermcap... no
checking for tgetent in -ltinfo... no
checking for tgetent in -lcurses... no
checking for tgetent in -lncurses... no
configure: error: termcap support not found
make: *** [editline/libedit.a] Error 1
jura:/usr/src/asterisk/asterisk-1.2#

…then you should go back and reread the list of packages you need installed before building. They are:

  • Linux 2.4 kernel sources or kernel 2.6 header files. (for libpri)
  • bison and bison-devel packages (This is used to build Asterisk)
  • ncurses and ncurses-devel packages (Used to build astman, etc.)
  • zlib and zlib-devel packages
  • openssl and openssl-devel packages

The relevant apt packages (for my Debian 2.4 test machine) were kernel-source-2.4.27, bison (bison-devel doesn’t exist, which makes some kind of sense – surely any use of a compiler compiler is development?), ncurses-dev and libncurses5-dev, zlib1g-dev, openssl, and libssl-dev.

Once these are installed, the build goes much more smoothly.

It’s all installed happily on my machine, and if I didn’t have work to do tomorrow I’d be posting again later this evening about how to set it up with the SPA-3102. I guess that will have to wait ’til later :-/