[Erlang36]kerl轻松管理安装各种OTP版本
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版本的更多相关文章
- Windows下安装nvm管理多个nodejs版本
平常在工作中难免会有node版本的要求,下面介绍一种利用nvm工具管理多个node版本的方法 下载安装 Github: Download nvm-windows --- nvm-setup.zip 程 ...
- centos 安装最新稳定版本docker
直接yum安装的docker版本是 : docker --versionDocker version 1.12.6, build 85d7426/1.12.6 一些新特性需要安装最新的稳定版本 国内可 ...
- Mac下同时安装多个版本的JDK
JDK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下Java8的Lambda等新特性,可是目前Java企业级应用的主打版本还是JDK6, JDK7.因此,我需要在我的电脑上同时有JDK8,J ...
- 【转】SVN管理多个项目版本库
转载地址:http://blog.163.com/zhangxuemin_zy/blog/static/10178565520115704031799/ SVN管理多个项目版本库: 安装SVN服务 ...
- Git版本控制工具(一)----git的安装及创建版本库
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Java反编译器安装及各版本介绍
JAVA语言是1995年5月由SUN公司发布的,由于其安全性高.代码优化.跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位. 不过,JAVA最突出 ...
- Python包管理工具和多版本环境管理
1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...
- Python关键点笔记之使用 pyenv 管理多个 Python 版本依赖环境
0x00 背景 从接触Python以来,一直都是采用virtualenv和virtualenvwrapper来管理不同项目的依赖环境,通过workon.mkvirtualenv等命令进行虚拟环境切换, ...
- win10下通过Anaconda安装TensorFlow-GPU1.3版本,并配置pycharm运行Mnist手写识别程序
折腾了一天半终于装好了win10下的TensorFlow-GPU版,在这里做个记录. 准备安装包: visual studio 2015: Anaconda3-4.2.0-Windows-x86_64 ...
随机推荐
- 1 预备知识--Hadoop简介
1 预备知识--Hadoop简介 Hadoop是Apache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce分布式计算框架为核心,为用户提供了一套底层透明的分布式基础设施Had ...
- 线程的等待方法:join
其实多线程最复杂的地方在于不同线程间的同步问题,这其中会涉及到先后执行问题.共享变量问题等.这篇文章我们主要来开个头,看一下join方法. using System; using System.Thr ...
- ASP.NET web 应用程序项目
ASP.NET web 应用程序项目 .ashx .ashx.cs aspx包括前台一些代码要处理,ashx可以看作是没有aspx页面中前台代码的后台.cs文件. 没有了前台代码,服务器负担少一点, ...
- XE7 update1
- $(window).scrollTop() 获取当前的鼠标位置 offset.left()指定标签在html中的坐标 offset.top() 指定标签在html中的坐标position() 指定标签相对父(relative)标签的坐标
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- libcurl 调用curl_easy_getinfo( ) 返回错误码对照
//执行设置好的操作 res = curl_easy_perform(easy_handle); //获取HTTP错误码 ; curl_easy_getinfo(easy_handle, CURLIN ...
- 【322】python控制键盘鼠标:pynput
参考:python实战===python控制键盘鼠标:pynput 参考:[Python Study Notes]pynput实现对鼠标控制 参考:pynput doc 参考:pynput Packa ...
- 04-SSH综合案例:环境搭建之jar包引入
刚才已经把表关系的分析已经分析完了,现在呢就先不去创建这个表,写到哪儿的时候再去创建这个表. 1.4 SSH环境搭建: 1.4.1 第一步:创建一个web项目. 1.4.2 第二步:导入相应jar包. ...
- 关于html与body的高度问题
转自https://blog.csdn.net/javaloveiphone/article/details/51098972 一.html,body{height:100%} 今天看到一个CSS样式 ...
- (K)ubuntu上将分区格式化成NTFS格式
新买了硬盘,装系统时,为Windows预留了几个分区,由于没有其他选择,因此将分区格式化成了fat32格式.装完系统后,总是很纠结,想把这些分区格式化成NTFS格式. google了一下,从这个网址( ...