kerl只有一个目标:让我们在不同的OTP版本间随意切换。他是一个纯Bash项目。简单实用的工作利器!

Readme里面用法已说明得非常清楚了。建议按流程来一次。

1.下载

安装(一个bash脚本,根本就不用安装~)

 curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl&chmod a+x kerl

2.工作原理

从official Erlang website上得到所有的release包信息,然后再下载对应的release后安装到指定的目录下。你也可以使用KERL_BUILD_BACKEND=git

指定从official source code上下载源.

3.用法

./kerl
kerl: build and install Erlang/OTP
usage: ./kerl <command> [options ...] <command> Command to be executed Valid commands are:
build Build specified release or git repository
install Install the specified release at the given location
deploy Deploy the specified installation to the given host and location
update Update the list of available releases from your source provider
list List releases, builds and installations
delete Delete builds and installations
active Print the path of the active installation
plt Print Dialyzer PLT path for the active installation
status Print available builds and installations
prompt Print a string suitable for insertion in prompt
cleanup Remove compilation artifacts (use after installation)
version Print current version (current: 1.3.)

3.1 列出所有可用的release包

$ ./kerl list releases
R10B- R10B- R10B-1a R10B- R10B- R10B- R10B- R10B- R10B- R10B- R10B- R11B- R11B- R11B- R11B- R11B- R11B- R12B- R12B- R12B- R12B- R12B- R12B- R13A R13B01 R13B02- R13B02 R13B03 R13B04 R13B R14A R14B01 R14B02 R14B03 R14B04 R14B R14B_erts-5.8.1.1 R15B01 R15B02 R15B02_with_MSVCR100_installer_fix R15B03- R15B03 R15B R16A_RELEASE_CANDIDATE R16B01 R16B02 R16B03- R16B03 R16B 17.0-rc1 17.0-rc2 17.0 17.1 17.3 17.4 17.5 18.0 18.1 18.2 18.2. 18.3 19.0
Run './kerl update releases' to update this list from erlang.org

3.2 下载指定release包并编译

KERL_CONFIGURE_OPTIONS=--enable-hipe ./kerl build 19.0 19.0_hipe % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed         :: :: --:--:--   64.8M       :: :: :: 

要从官网上下70M的东西,erlang.org对中国区本来就慢,建议使用git源(KERL_BUILD_BACKEND=git)

3.3 查看现在有release包列表

./kerl list builds
17.4 17.4
19.0 .0_hipe

3.4 安装包

$./kerl install .0_hipe /usr/local/sbin/erl_19_0_hipe
Installing Erlang/OTP 19.0 (19.0) in /usr/local/sbin/erl_19_0...
You can activate this installation running the following command:
. /usr/local/sbin/erl_19_0/activate
Later on, you can leave the installation typing:
kerl_deactivate

稍等一会,就会提示你安装成功。

3.5 使用指定版本的OTP

如果想在当前的shell中使用安装好的上面19版本的OTP,只需要

$./usr/local/sbin/erl_19_0/activate

然后打开erlang shell试试看:

$erl
Erlang/OTP [erts-8.0] [source] [-bit] [smp::] [async-threads:] [kernel-poll:false]
Eshell V8. (abort with ^G)
>

成功在当前的shell中使用19的release啦。

如果不想使用了,也可以使用下面命令来禁用

kerl_deactivate

以上就是kerl的基本用法,有了它,你就可以在本机上装多个版本的erlang了。对要测试多个版本的工作太有用了。

4. 补充

可能有人也注意到了,这是从源码重新编译,可不可以更加方便的指定编译的参数,

而不是像上面在命令行中 KERL_CONFIGURE_OPTIONS=--enable-hipe。

这是可以的。

kerl在home下有一个.kerlrc(类似于.bashrc),比如我的

emacs ~/.kerlrc
KERL_CONFIGURE_OPTIONS="--disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll --enable-darwin-64bit --with-ssl=/usr/local/Cellar/openssl/1.0.2h_1"

除了这个configure options外,还有很多项都可以在.kerlrc中配置(可以在readme中找到详细的说明),方便又不缺乏灵活。

kerl在home下有一个.kerl(类似于.ssh目录)

cd ~/.kerl && ls
archives builds otp_builds otp_builds-e otp_installations otp_releases

这里就是kerl命令存放release和存install数据的地方。

5. 资源

5.1 elixir也有对应的项目叫kiex。

5.2 kerl甚至可以deploy到远程的服务器上安装,只要你配置好ssh key,虽然没有用到,但是这也太炫酷啦。

5.3 basho使用kerl安装的文档:http://docs.basho.com/riak/kv/2.1.4/setup/installing/source/erlang/#kerl-prerequisites

If my fingers were erlang processes~

[Erlang36]kerl轻松管理安装各种OTP版本的更多相关文章

  1. Windows下安装nvm管理多个nodejs版本

    平常在工作中难免会有node版本的要求,下面介绍一种利用nvm工具管理多个node版本的方法 下载安装 Github: Download nvm-windows --- nvm-setup.zip 程 ...

  2. centos 安装最新稳定版本docker

    直接yum安装的docker版本是 : docker --versionDocker version 1.12.6, build 85d7426/1.12.6 一些新特性需要安装最新的稳定版本 国内可 ...

  3. Mac下同时安装多个版本的JDK

    JDK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下Java8的Lambda等新特性,可是目前Java企业级应用的主打版本还是JDK6, JDK7.因此,我需要在我的电脑上同时有JDK8,J ...

  4. 【转】SVN管理多个项目版本库

    转载地址:http://blog.163.com/zhangxuemin_zy/blog/static/10178565520115704031799/ SVN管理多个项目版本库:   安装SVN服务 ...

  5. Git版本控制工具(一)----git的安装及创建版本库

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  6. Java反编译器安装及各版本介绍

    JAVA语言是1995年5月由SUN公司发布的,由于其安全性高.代码优化.跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位.         不过,JAVA最突出 ...

  7. Python包管理工具和多版本环境管理

    1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...

  8. Python关键点笔记之使用 pyenv 管理多个 Python 版本依赖环境

    0x00 背景 从接触Python以来,一直都是采用virtualenv和virtualenvwrapper来管理不同项目的依赖环境,通过workon.mkvirtualenv等命令进行虚拟环境切换, ...

  9. win10下通过Anaconda安装TensorFlow-GPU1.3版本,并配置pycharm运行Mnist手写识别程序

    折腾了一天半终于装好了win10下的TensorFlow-GPU版,在这里做个记录. 准备安装包: visual studio 2015: Anaconda3-4.2.0-Windows-x86_64 ...

随机推荐

  1. virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法

    google出来的解决方案:创建静态ip的方法,既然虚拟机桥接模式下无法通过主机网卡获取ip桥接到网络,那么我们就创建最大网络地址,然后reboot,这样虚拟机就可以获取ip联网了. Static I ...

  2. GridView弹出对话框

    if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) ...

  3. 内存表 FDMemTable ClientDataSet CreateDataSet 动态创建字段

    https://community.embarcadero.com/index.php/blogs/entry/firedac-in-memory-dataset-tfdmemtable Client ...

  4. Android 获取图片转bitmap

    1. Resources resources = mContext.getResources(); Drawable drawable = resources.getDrawable(R.drawab ...

  5. go_结构体和方法

    面向对象:go语言仅支持封装不支持继承和多态 所以go语言没有class,只有struct(结构体) 无论地址还是结构本身,一律用 . 来访问成员 go语言编译器可以自动区分是值传递还是指针传递,值传 ...

  6. vector中resize()和reserve()的区别

    先看看<C++ Primer>中对resize()函数两种用法的介绍: 1.resize(n) 调整容器的长度大小,使其能容纳n个元素. 如果n小于容器的当前的size,则删除多出来的元素 ...

  7. 磁盘存储结构与文件恢复实验(FAT文件系统)

    实验地点:主楼A2-412 一.实验室名称:主楼实验室A2-412                  二.实验项目名称:磁盘存储结构与文件恢复实验 三.实验学时:6学时 四.实验原理: 在Debug环 ...

  8. 查看http的并发请求数及其TCP连接状态

    统计80端口的连接数据 netstat -nat | grep -i "80" | wc -l 统计httpd协议连接数 ps -ef | grep httpd | wc -l 统 ...

  9. MVC数据注解

    数据注解 using System.ComponentModel.DataAnnotations; KeyAttribute 唯一主键StringLengthAttribute 字符串长度约束MaxL ...

  10. Linux gcj命令

    一.简介 GCJ是GNU的Java编译器,可以把java程序编译成本地代码,编译成功后的可执行文件不再需要jre就可直接运行,编译成本地后的程序运行速度有所提高,缺点是生成后的文件较大. 参考: ht ...