Minimal Clojure environment

This document describes how to set up a minimal Clojure environment under Linux or MacOS.

Java

First, make sure that Java 1.8 or higher is installed. (Note that Java versions greater than 1.8 may not work correctly, so you are best off running 1.8.) If you run

java -version

from the command line, you should see something like the following:

openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

The exact output isn’t important as long as the version number starts with 1.8.

Leiningen

Start a terminal and run the following commands:

cd $HOME
mkdir -p bin
cd bin
[ -e lein ] && mv lein lein.OLD
wget https://raw.githubusercontent.com/technomancy/leiningen/2.7.1/bin/lein
chmod a+x lein

Configure .bashrc

Edit the .bashrc file in your home directory to add the following lines at the bottom of the file:

export PATH=$HOME/bin:$PATH

Close your existing terminal (if any), start a new terminal, and then run the command

echo $PATH

Make sure you see something like homedir/bin in your $PATH. For example, my home directory is /home/dhovemey, so I would expect to see /home/dhovemey/bin in my $PATH.

Verify leiningen

In your terminal, run the command

which lein

Make sure the output is something like homedir/bin/lein, where homedir is your home directory. When I run this command, I see the output

/home/dhovemey/bin/lein

because my home directory is /home/dhovemey. Important: make sure you do not see /usr/bin/lein.

Next, run the command

lein -version

You should see something like

Leiningen 2.7.1 on Java 1.8.0_131 OpenJDK 64-Bit Server VM

Finally, run the following commands:

cd $HOME
rm -rf .lein

These last commands will clear out any previously cached dependencies and ensure you get a completely fresh Clojure environment.

Using Leiningen

Now run

lein repl

You should be in a Clojure REPL. If this works, you should be able to run Leiningen commands from the command line. For example, let’s say your work on the structured-data MOOC chapter is in $HOME/git/structured-data. To run the tests, you’d do something like

cd $HOME
cd git/structured-data
lein midje