多版本

简介: 多版本

前言

干过多年开发的都知道,语言版本会对代码产生严重的影响,在其他语言生态均有版本管理工具。例如 Python 生态的 condapipenvvirtualenv 等等, NodeJS 生态的 nvmgo 生态的 gvm 等等。但是在 Lua 这里就没有这种东西了,也可能是我没有找到,据个人猜测,可能是因为 Lua 语言的设计之初就是针对轻量级的,这种繁复的东西没有做;也可能是受众大部分都不是纯软件开发的,所以没有纯软件哪里的思想。


总之,没有轮子就要自己造轮子,或者用其他的方式实现。这里使用源码编译安装,并自定义路径的方式。


编译环境配置

$ sudo apt install libreadline-dev gcc


下载源码

提示

这里以 Lua5.1.5Lua5.3.5 版本为例。


在合适的位置下打开终端,执行下载和解压命令:

$ wget http://www.lua.org/ftp/lua-5.1.5.tar.gz && wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
$ tar zxf lua-5.1.5.tar.gz && tar zxf lua-5.3.5.tar.gz


修改配置

分别修改 lua-5.1.5lua-5.3.5 源码文件夹下根目录中的 Makefile 文件,将里面的 INSTALL_TOP= /usr/local 配置对于修改为带有版本号的,如下所示:

# 5.1.5版本
INSTALL_TOP= /usr/local/lua-5.1.5
# 5.3.5版本
INSTALL_TOP= /usr/local/lua-5.3.5


编译与安装

分别在 lua-5.1.5lua-5.3.5 源码文件夹下打开终端,执行下面编译与安装命令:

$ make linux test
$ sudo make install


配置软链接

接下来通过软链接来实现版本控制的功能:

# 默认lua命令指向lua 5.1.5
$ sudo ln -sf /usr/local/lua-5.1.5/bin/lua /usr/local/bin/lua
$ sudo ln -sf /usr/local/lua-5.1.5/bin/lua /usr/local/bin/lua51
$ sudo ln -sf /usr/local/lua-5.3.5/bin/lua /usr/local/bin/lua53
# 默认luac命令指向lua 5.1.5
$ sudo ln -sf /usr/local/lua-5.1.5/bin/luac /usr/local/bin/luac
$ sudo ln -sf /usr/local/lua-5.1.5/bin/luac /usr/local/bin/luac51
$ sudo ln -sf /usr/local/lua-5.3.5/bin/luac /usr/local/bin/luac53


测试

经过上面的配置已经实现了多版本共存了,下面来测试一下:

$ lua -v
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
$ lua51 -v
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
$ lua53 -v
Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio
目录
相关文章
|
10月前
|
Java Linux 开发工具
Jenv 多版本JDK管理
Jenv 可以对多版本JDK进行管理
|
6月前
|
关系型数据库 MySQL 数据库
MySQL高级篇——MVCC多版本并发控制
什么是MVCC、快照读与当前读、隐藏字段、Undo Log版本链、ReadView、举例说明、InnoDB 解决幻读问题
|
9月前
|
存储 关系型数据库 MySQL
第16章_多版本并发控制
第16章_多版本并发控制
47 0
|
关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】2
第16章 多版本并发控制【3.事务篇】【MySQL高级】2
81 0
|
存储 关系型数据库 Go
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
315 0
|
SQL 关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】3
第16章 多版本并发控制【3.事务篇】【MySQL高级】3
105 0
|
存储 关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】1
第16章 多版本并发控制【3.事务篇】【MySQL高级】1
155 0
|
存储 关系型数据库 MySQL
第16章_多版本并发控制(上)
第16章_多版本并发控制
133 0
|
SQL 关系型数据库 MySQL
第16章_多版本并发控制(下)
第16章_多版本并发控制
139 0
|
存储 Oracle 关系型数据库
高性能 MySQL(四):多版本并发控制(MVCC)
MVCC(Multiversion Concurrency Control)即多版本并发控制,它是数据库系统常用的一种并发控制,用于提升事务内数据的并发性。可以认为 MVCC 是行锁的一个变种,在很多种情况下避免了加锁操作,因此开销更低。 MVCC 的实现,是通过保存数据在某个时间点的**快照**来实现的。也就是说,每个事务读到的数据都是一个历史快照,不管这个事务执行多长时间,事务内看到的数据总是一致的。
350 0