多版本

简介: 多版本

前言

干过多年开发的都知道,语言版本会对代码产生严重的影响,在其他语言生态均有版本管理工具。例如 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
目录
相关文章
|
5月前
|
存储 关系型数据库 数据库
聊多版本并发控制(MVCC)
MVCC是数据库并发控制技术,用于减少读写冲突。它维护数据的多个版本,使事务能读旧数据而写新数据,无需锁定记录。当前读获取最新版本,加锁防止修改;快照读不加锁,根据读取时的读视图(readview)决定读哪个版本。InnoDB通过隐藏字段(DB_TRX_ID, DB_ROLL_PTR)和undo log存储版本,readview记录活跃事务ID。读已提交每次读取都创建新视图,可重复读则在整个事务中复用一个视图,确保一致性。MVCC通过undo log版本链和readview规则决定事务可见性,实现了非阻塞并发读。
236 5
聊多版本并发控制(MVCC)
|
12月前
|
存储 关系型数据库 MySQL
MVCC多版本并发控制
MVCC多版本并发控制 1、MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。
83 0
|
18天前
|
关系型数据库 MySQL 数据库
MySQL高级篇——MVCC多版本并发控制
什么是MVCC、快照读与当前读、隐藏字段、Undo Log版本链、ReadView、举例说明、InnoDB 解决幻读问题
MySQL高级篇——MVCC多版本并发控制
|
4月前
|
存储 关系型数据库 MySQL
第16章_多版本并发控制
第16章_多版本并发控制
25 0
|
5月前
|
存储 关系型数据库 MySQL
MVCC:深入解析多版本并发控制机制
【4月更文挑战第20天】MVCC是数据库并发控制的关键技术,通过保存数据多个版本,使读写操作无锁并发,减少锁竞争,提高并发性能。它保证事务看到一致数据快照,避免并发问题,并支持事务回滚与恢复。MVCC广泛应用于PostgreSQL、InnoDB等,提供时间旅行查询和无锁读等功能,对于构建高性能、高并发数据库系统至关重要。
127 13
|
算法 关系型数据库 MySQL
MySQL事务隔离实现原理,多版本并发控制MVCC
MySQL事务隔离实现原理,多版本并发控制MVCC
160 0
|
12月前
|
存储 关系型数据库 Go
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
217 0
|
存储 关系型数据库 MySQL
第16章_多版本并发控制(上)
第16章_多版本并发控制
92 0
|
SQL 关系型数据库 MySQL
第16章_多版本并发控制(下)
第16章_多版本并发控制
119 0
|
存储 Oracle 关系型数据库
高性能 MySQL(四):多版本并发控制(MVCC)
MVCC(Multiversion Concurrency Control)即多版本并发控制,它是数据库系统常用的一种并发控制,用于提升事务内数据的并发性。可以认为 MVCC 是行锁的一个变种,在很多种情况下避免了加锁操作,因此开销更低。 MVCC 的实现,是通过保存数据在某个时间点的**快照**来实现的。也就是说,每个事务读到的数据都是一个历史快照,不管这个事务执行多长时间,事务内看到的数据总是一致的。
183 0