E1.获取Elixir/Erlang版本信息
E1.获取Elixir/Erlang版本信息
获取Elixir版本
直接在shel中打开iex (interactive shell),就可以查到具体的版本信息:
iex
Erlang/OTP 22 [erts-10.6] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]
Interactive Elixir (1.9.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
使用符合GUN选项标准--version或-v,比如在写Shell脚本时可以用来判断版本。
iex --version
Erlang/OTP 22 [erts-10.6] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]
IEx 1.9.0 (compiled with Erlang/OTP 22)
iex -v
Erlang/OTP 22 [erts-10.6] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]
IEx 1.9.0 (compiled with Erlang/OTP 22)
在代码中获取版本信息:System.version/0
iex(1)> System.version
"1.9.0"
获取Erlang版本
Erlang无法使用erl --version命令,只能通过命令行选项eval与noshell参数求值来实现。
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell
eval:对Erlang表达式求值。noshell: 不启动shell,就像上面的elixir --version一样。halt()退出当前运行时
由于:erlang.system_info(:opt_release)只能拿到一个大版本号:比如22:
iex(1)> :erlang.system_info(:otp_release)
'22'
如果想要更详细的版本信息可以使用:
erl -noshell -eval \
> '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().'
22.2
上面的代码来源于Erlang官方文档。
多个表达式写成一行使用逗号隔开,显得不那么容易理解,还可以把多个表达式分开写:
erl -noshell -eval \
'{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version).'\
-eval 'halt().'
22.2
或用-s参数:
erl -noshell -eval \
> '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version).'\
> -s erlang halt
22.2
PS:上面的OTP_VERSION文件是从R17后才有的。
从R17开始,OTP的大版本代表的是一组特定版本的应用(Applications),这一组合通过了爱立信官方OTP团队的测试,但是个人也可以不升级大版本,只升级其中的某个特定应用的版本,这样的组合的兼容性没有经过官方验证/测试,需要自己充分测试,所以没有经过充分的测试,别只单独升级个别应用,最佳实践是保持和官方大版本一致的应用版本。
It is therefore always preferred to use OTP applications from one single OTP version.
想要得到那些应用在本版本做了变更,可以查看查看otp_versions.table,它罗列了每个版本具体的改动情况,每一行代表一个版本,比如:
OTP-22.1.1 : compiler-7.4.6 erts-10.5.1 snmp-5.4.1 # asn1-5.0.9 common_test-1.18 crypto-4.6 debugger-4.2.7...
OTP-22.1.1: OTP版本。compiler-7.4.6 erts-10.5.1 snmp-5.4.1:发生了变更的应用。#后面的应用为未发生变更。

E1.获取Elixir/Erlang版本信息的更多相关文章
- 获取 Android APP 版本信息工具类(转载)
获取 Android APP 版本信息工具类 获取手机APP版本信息工具类 1.获取版本名称 2.获取版本号 3.获取App的名称 package com.mingyue.nanshuibeidiao ...
- 使用JavaScript获取浏览器Chrome版本信息
Navigator对象包含了有关浏览器的信息 可通过访问其属性appVersion或userAgent来获取浏览器Chrome版本 例如,我所使用的QQ浏览器的appVersion和userAgent ...
- js获取智能机浏览器版本信息
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- 获取Exe文件版本信息的函数(使用GetFileVersionInfo得到TFileVersionInfo结构体,包含12项内容)
Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} Comp ...
- php:获取浏览器的版本信息
//分析返回用户网页浏览器名称,返回的数组第一个为浏览器名称,第二个是版本号. function getBrowser() { $sys = $_SERVER['HTTP_USER_AGE ...
- mfc获取exe的版本信息
CString GetFileVersion(const CString& sTargetFileName){ DWORD nInfoSize = 0, dwHandle = 0; nInfo ...
- c# 获取系统版本,获取net framework 版本(Environment 类)
1.获取当前操作系统版本信息 使用Environment.OSVersion 属性 获取包含当前平台标识符和版本号的 OperatingSystem 对象. 命名空间: System程序集: ms ...
- PHP经验——获得PHP版本信息及版本比较
原文:PHP经验--获得PHP版本信息及版本比较 偶然看到别人写的一句代码: <?php if (version_compare("5.2", PHP_VERSION, &q ...
- 转载 :c# 获取net framework 版本(Environment 类)
源链接:http://www.cnblogs.com/tobecrazy/p/3362446.html 根据自己使用情况,添加了部分备注 1.获取当前操作系统版本信息 使用Environment.OS ...
随机推荐
- 工具-python包-虚拟环境管理(99.4.1)
@ 目录 1.第一种方法-virtualenv 2.第二种方法-pycharm 关于作者 1.第一种方法-virtualenv 1.安装 pip install virtualenv pip inst ...
- SQL注入练习第一天
MySQL 相关知识 在MySQL中,把[INFORMATION_SCHEMA] 看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库的 ...
- 第 16 章 【硬核!】 垃圾回收相关 GC细讲
第 16 章 垃圾回收相关概念 1.System.gc() 的理解 1.1.System.gc() 方法 System.gc() 方法 在默认情况下,通过System.gc()者Runtime.get ...
- 利用xlutils第三方库复制excel模板
Python之利用第三方库套用excel模板,模板的样子假设如下: 现在要用这个模板,并且在"第二行第二列"的下方填入内容: #!usr/bin/python3 # -*-codi ...
- 数据库SQL调优的几种方式 EFcore读的情况下使用 AsNoTracking非跟踪查询
不要用GUID 当主键 没有规律 可以用雪花ID DBA 优化法则 硬件资源是根本,DBA是为了充分利用硬件资源 一般清空下可以不使用外键 可以提高性能 合理使用临时表 临时表分页; 一些查询语句加w ...
- win10删除文件没有提示框
步骤 右键 回收站, 显示删除确认对话框
- .net core 和 WPF 开发升讯威在线客服与营销系统:系统总体架构
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...
- MM-采购模块相关业务
采购模块主要业务流程: 1.收集采购需求(采购申请单),系统采购申请单单据可以由需求部门手工产生,也可以由系统的MRP(物料需求计划)来产生. 2,货源确定,用来确定所申请的物料,通过何种方式向供应商 ...
- Android驱动学习-app调用内核驱动过程(驱动框架回顾)
考研已经过去了,android驱动的学习也断了半年多了,现在重新捡起来学习,回顾一下Android驱动的大体框架. Android系统的核心是java,其有一个David虚拟机.Android-app ...
- 强化学习入门基础-马尔可夫决策过程(MDP)
作者:YJLAugus 博客: https://www.cnblogs.com/yjlaugus 项目地址:https://github.com/YJLAugus/Reinforcement-Lear ...