Sytes tutorial

In these pages I'll show how to install Sytes and create a simple website. I'm trying to target this at Lisp beginners and start from scratch, therefore on this page I'll give information about how to install SBCL, Quicklisp and SLIME on a fresh Debian/Ubuntu system. Skip it if you already have a proper setup.

Install SBCL from Git

SBCL is really easy to install from the Ubuntu repository, but I don't recommend using that version because it's usually too old (indeed, contrary to popular belief, there are things happening in the Lisp community and SBCL is actively maintained, a point release happening every month or so).

We will install SBCL from the Ubuntu package, however, in order to bootstrap the compiler (SBCL is written in Common Lisp, so in order to compile it you need to have a Common Lisp implementation already installed. We'll use an older SBCL—the one from Ubuntu—in order to compile the latest and greatest). Note I'm replaying this information from my memory, as I don't have a fresh Ubuntu box right now, but it should work fine:

sudo apt-get install git-core sbcl build-essential texinfo

Now let's fetch and compile SBCL from Git. I'm using git://, I think it's the official Git repository, but there are many mirrors if that doesn't work (use Google).

mkdir ~/Lisp
cd ~/Lisp
git clone git://
cd sbcl

No go get a coffee. Building SBCL takes around 10 minutes on my laptop.

Optionally you can build the documentation (that's what texinfo was installed for):

cd doc/manual
cd -

To install it now, you need “sudo” privileges:

sudo sh

It installs the SBCL binary as /usr/local/bin/sbcl. You can run it to see everything's fine, then we can uninstall the one from Ubuntu:

/usr/local/bin/sbcl --version  ## SBCL
sudo apt-get remove sbcl

Install Quicklisp

Quicklisp is a tool that facilitates loading Common Lisp packages and dependencies. Especially if you're new to Common Lisp, Quicklisp is an essential tool to have, and it's trivial to install. The official instructions are simple and concise, so I'm not going to copy/paste them.


Does it make any sense to continue this part? Drop me an email if you think so.

Fork me on Github