Docker:在Ubuntu host里面安装Leiningen
首先安装Java,我们可以去Java的官方网站下载JDK8:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
因为我的container里面的host是ubuntu 64bit,所以我下载相关的64bit的java包:
如果是Fedora Linux,选择rpm更方便。下载完成后,把下载好的压缩包拷贝进container host:
$ docker cp jdk-8u161-linux-x64.tar.gz quizzical_heyrovsky:/tmp
这样,在container host里面就有这个压缩包了:
$ ls /tmp/jdk-8u161-linux-x64.tar.gz
/tmp/jdk-8u161-linux-x64.tar.gz
然后在container host里面解压这个压缩包:
$ cd /tmp
$ tar zxf jdk-8u161-linux-x64.tar.gz
此时查看被解压缩的jdk目录:
可以看到jdk包已经解压缩成jdk目录了,我们把这个目录放到合适的路径下面:
$ mv jdk1.8.0_161 /
这样,jdk就放好了。接下来要配置相关的路径,让java可以正常运行:
$ export PATH=$PATH:/jdk1.8.0_161/jre/bin/
$ export JAVA_HOME=/jdk1.8.0_161/jre/
完成了上面的设置,我们可以试试看执行java命令:
$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
如果得到了上面的结果,就说明Java准备好了。为了以后每次登录进host,Java上面的设置都自动设置好,我们要把上面的配置加到root的bash的启动环境脚本里面:
$ cd
$ pwd
/root
$ ls .bashrc
.bashrc
这个「.bashrc」就是启动脚本了。保险起见,我们先把这个文件做下备份:
$ cp .bashrc .bashrc.bkup
然后就是把java的配置加到这个文件里面去。下面是命令:
$ echo "export PATH=$PATH:/jdk1.8.0_161/jre/bin/" >> .bashrc
$ echo "export JAVA_HOME=/jdk1.8.0_161/jre/" >> .bashrc
可以用tail命令确认上面的内容已经加入文件了:
$ tail -n 2 .bashrc
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/jdk1.8.0_161/jre/bin/
export JAVA_HOME=/jdk1.8.0_161/jre/
这样,上面的两行配置就加到启动脚本文件里面了,以后再登录进host,都可以默认使用java了。
接下来我们要安装Leiningen。为了下载Leiningen的脚本,我们得去它的网站得到下载地址:
https://leiningen.org/
在它的网站里,我们要下载这个「lein」脚本。为了下载这个脚本,我们可以先把「wget」这个下载工具安装好,会方便一些。下面是安装命令:
$ apt-get install wget
安装完成后,我们就可以下载lein脚本:
$ cd /usr/local/bin/
$ wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein
下载完lein脚本以后,我们需要给这个脚本加上可执行属性,下面是命令:
$ chmod a+x lein
然后执行命令:
$ lein
会花费一些时间进行下载,耐心等待即可。下载完成后,lein命令就可以后续使用了,并可以看到执行情况:
接下来我们可以进入lein的repl:
$ lein repl
第一次执行会需要一些时间下载所需的包,耐心等待即可。server启动以后,还要很长一段时间才能进入repl,需要耐心等待。进入repl以后,情况如下所示:
在repl里面输入一段clojure代码试试看:
(println "Hello, world!")
得到代码的执行结果:
到此为止,我们已经成功安装了Leiningen,并且可以用它来执行clojure代码了。
- 上一篇 Docker:启动容器,登入容器
- 下一篇 各种语言中的map和lambda