Installing Leiningen on Mac OS
I’ve been playing with Clojure for quite sometime now. It’s a functional language hosted on the JVM, with a growing community and a very rich ecosystem. You can find libraries for every major problem, but in case you cannot find, you can count on the interoperability with Java will bridge the gap.
Nowadays, every programming language and platform offer a development environment with a build tool as foundation. Take as example Maven, Gradle and Sbt. It isn’t different in the Clojure world. It uses Leiningen as a build and project management tool. So, I would like to share with you how I’ve managed to install and configure Leiningen on my Mac.
First, create the directory /Applications/clojure
to store Clojure’s related tools:
$ sudo mkdir /Applications/clojure
Navigate to the new directory, download the Leiningen script and give to the downloaded file permission to execute:
$ cd /Applications/clojure
$ sudo curl -O https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein
$ sudo chmod +x lein
Add the new directory to the $PATH
to be able to execute it everywhere in your system. To do that, navigate to the directory /etc/paths.d
and create a file named clojure.lein
with the content /Applications/clojure
:
$ cd /etc/paths.d/
$ sudo echo "/Applications/clojure" >> clojure.lein
If the output of the command above is “permission denied” then you don’t have enough privileges to add something to /etc/paths.d/
. In this case, you can add lein exclusively to your user profile.
$ cd ~
$ echo “export PATH=$PATH:/Applications/clojure” >> .bash_profile
Close the current terminal and open a new one to activate the changes. Execute the following command to check whether the $PATH variable was correctly modified to include Leiningen’s path:
echo $PATH
You should be able to find the path /Applications/clojure
concatenated within the value.
Finally, execute the command lein
for the first time to install Leiningen:
$ lein
It will download the latest version of Leiningen and make you ready to program in Clojure. Start the Clojure REPL with the following command:
$ lein repl
Have fun with Clojure and Leiningen!
Recent Posts
Can We Trust Marathon Pacers?
Introducing LibRunner
Clojure Books in the Toronto Public Library

Once Upon a Time in Russia

FHIR: A Standard For Healthcare Data Interoperability

First Release of CSVSource

Astonishing Carl Sagan's Predictions Published in 1995

Making a Configurable Go App

Dealing With Pressure Outside of the Workplace

Reacting to File Changes Using the Observer Design Pattern in Go

Provisioning Azure Functions Using Terraform

Taking Advantage of the Adapter Design Pattern

Applying The Adapter Design Pattern To Decouple Libraries From Go Apps

Using Goroutines to Search Prices in Parallel

Applying the Strategy Pattern to Get Prices from Different Sources in Go
