多版本

简介: 多版本

前言

干过多年开发的都知道,语言版本会对代码产生严重的影响,在其他语言生态均有版本管理工具。例如 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
目录
相关文章
|
存储 关系型数据库 MySQL
MVCC多版本并发控制
MVCC多版本并发控制 1、MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。
99 0
|
6月前
|
存储 关系型数据库 MySQL
第16章_多版本并发控制
第16章_多版本并发控制
35 0
|
7月前
|
存储 关系型数据库 MySQL
MVCC:深入解析多版本并发控制机制
【4月更文挑战第20天】MVCC是数据库并发控制的关键技术,通过保存数据多个版本,使读写操作无锁并发,减少锁竞争,提高并发性能。它保证事务看到一致数据快照,避免并发问题,并支持事务回滚与恢复。MVCC广泛应用于PostgreSQL、InnoDB等,提供时间旅行查询和无锁读等功能,对于构建高性能、高并发数据库系统至关重要。
149 13
|
关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】2
第16章 多版本并发控制【3.事务篇】【MySQL高级】2
63 0
|
算法 关系型数据库 MySQL
MySQL事务隔离实现原理,多版本并发控制MVCC
MySQL事务隔离实现原理,多版本并发控制MVCC
181 0
|
存储 关系型数据库 Go
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
248 0
|
SQL 关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】3
第16章 多版本并发控制【3.事务篇】【MySQL高级】3
89 0
|
存储 关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】1
第16章 多版本并发控制【3.事务篇】【MySQL高级】1
126 0
|
SQL 关系型数据库 MySQL
第16章_多版本并发控制(下)
第16章_多版本并发控制
126 0
|
存储 关系型数据库 MySQL
第16章_多版本并发控制(上)
第16章_多版本并发控制
101 0