CLOVER🍀

That was when it all began.

Clojure 1.5.1インストール

久々にClojureを使ってみようと思いまして、基本的なことからやり直したいと思います。まずは、インストールからですかね。

Clojure
http://clojure.org/

ダウンロードページから、バイナリを取得。

ダウンロードページ
http://clojure.org/downloads

現時点での最新安定版は、1.5.1です。

「clojure-1.5.1.zip」をダウンロードします。

これを適当なところに展開します。自分は、/usr/localの下に入れることにしているので

$ cd /usr/local/
$ sudo mkdir clojure
$ cd clojure/
$ sudo cp [clojure-1.5.1.zipのダウンロード場所] ./.
$ sudo unzip clojure-1.5.1.zip
$ sudo rm clojure-1.5.1.zip
$ sudo ln -s clojure-1.5.1/clojure-1.5.1.jar clojure.jar

としました。現在のclojure-[X.Y.Z].jarに、clojure.jarという別名を与えることにしています。

これに、以下のページを参考に起動スクリプトを用意。

The REPL and main entry points
http://clojure.org/repl_and_main

clj

#!/bin/bash

declare -a ARGS

APPEND_CLASSPATH=
while [ "$1" != "" ];
do
  if [ "$1" == "-cp" ]; then
    shift
    APPEND_CLASSPATH="$1"
  else
    ARGS=("${ARGS[@]}" "$1")
  fi

  shift
done

${JAVA_HOME}/bin/java -cp `dirname $0`/clojure.jar:"${APPEND_CLASSPATH}" clojure.main ${ARGS[*]}

クラスパスくらいは通せるように、アレンジを入れました。

権限変更。

$ sudo chmod a+x clj

ディレクトリ自体も、ちょっと微妙だったので…。

$ sudo find clojure-1.5.1 -type f | xargs sudo chmod 644
$ sudo find clojure-1.5.1 -type d | xargs sudo chmod 755

あとは、作った/usr/local/clojureにパスを通して終了。.bashrcにでも。

export CLOJURE_HOME=/usr/local/clojure
PATH=${CLOJURE_HOME}:${PATH}

同じターミナル上で操作する場合は、再評価を忘れずに。

$ . .bashrc 

REPLを起動。

$ clj
Clojure 1.5.1
user=> (println "Hello Clojure!!")
Hello Clojure!!
nil
user=>

簡単なスクリプトを作って、
hello.clj

(println "Hello Clojure!!")

実行。

$ clj hello.clj 
Hello Clojure!!

あとは、Emacsにclojure-modeを追加。

今は、こちらから取得するみたいですね。

clojure-mode
https://github.com/clojure-emacs/clojure-mode

このファイル
https://github.com/clojure-emacs/clojure-mode/blob/master/clojure-mode.el

ダウンロードしてきたclojure-mode.elをsite-lispにでも置いて、.emacsに以下を追加。

;; clojure-mode
(require 'clojure-mode)
(autoload 'clojure-mode "clojure-mode" "Clojure editing mode." t)
(add-to-list 'auto-mode-alist '("\.clj$" . clojure-mode))

自分は、clojure-modeの時はタブも無効に。

;; clojure-modeの場合はタブを無効
(add-hook 'clojure-mode-hook
          '(lambda ()
             (setq indent-tabs-mode nil)))

こんなところで。

ただ、最近はREPLを使うのにもClojureのランタイムをわざわざインストールするということは、やらないのでしょうかね?次回はLeiningenをもう1度。