一,问题
上次学习erlang半途而废,这次重学。看《Erlang程序设计(第一版)》,一边看一边运行书中的例子。
然后在试验‘5.3.1 映射组语法’时出错
$ erl
Erlang R16B02 (erts-5.10.3) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V5.10.3 (abort with ^G)
1> F1 = #{a=>1,b=>2}.
* 1: syntax error before: '{'
百度看到‘Erlang 从 R17 版本开始支持映射组’,翻看书中的前言部分,果然看到‘介绍了Erlang的R17版’。
我装得erlang是R16B02,版本过低。
二,卸载
旧版本的erlang是下载源码,然后make install的。
查卸载方法:http://stackoverflow.com/questions/22396240/how-to-uninstall-or-upgrade-erlang-otp
文中第一个方法--prefix=path:
./configure --prefix=/opt/erlang-R15B01
./configure && make && make install
看情况是覆盖,但是我想删掉旧版本
第二个方法:
sudo apt-get purge erlang*
sudo rm -rf /usr/local/lib/erlang/
直接删除有点粗暴啊,但是erlang的Makefile好像没看到卸载的命令,就选这个了。
卸载完后/otp_src_R16B02先留着,别到时候新版本安装失败
三,重装
之前查到网站提到kerl VM manager,试一下这个。
查看: http://blog.csdn.net/yecong111/article/details/9132997
1、下载Kerl https://github.com/spawngrid/kerl
2、随便找个路径下,解压kerl-master.zip
3、./kerl list releases 会出现Erlang的各个版本,你也可以使用./kerl update releases获取最新的版本。
因为书中介绍R17,我使用17.0版本
4、./kerl build 17.0 R17
进行下载,17.0是版本号,R17是别名
5、进行安装 (路径随你自己,我按照之前旧版本的路径 )
$ sudo ./kerl install R17 /usr/local/bin/erlang
[sudo] password for cloud:
Installing Erlang/OTP 17.0 (R17) in /usr/local/bin/erlang...
You can activate this installation running the following command:
. /usr/local/bin/erlang/activate
Later on, you can leave the installation typing:
kerl_deactivate
6、检查安装好的Erlang
$ ./kerl list installations
R17 /usr/local/bin/erlang
7、激活(命令在第5步安装完成后会提示)
$ . /usr/local/bin/erlang/activate
$ erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 6.0
9、在/etc/profile文件下添加环境变量
export ERL_HOME=/usr/local/bin/erlang
export PATH=$PATH:$ERL_HOME/bin
然后运行:
$ source /etc/profile
10、试验旧版本出问题的映射组,结果初步成功
$ erl
Erlang/OTP 17 [erts-6.0] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V6.0 (abort with ^G)
1> F1 = #{a=>1,b=>2}.
#{a => 1,b => 2}
11、其他
查看的博客上还有其他内容,贴在这以后查看
"""
删除安装的Erlang
1、./kerl delete build R17
2、./kerl delete installation /usr/local/bin/erlang
Kerl还有一些其他的命令,可以从https://github.com/spawngrid/kerl 进行查看
"""