前言
干过多年开发的都知道,语言版本会对代码产生严重的影响,在其他语言生态均有版本管理工具。例如 Python
生态的 conda
、 pipenv
、 virtualenv
等等, NodeJS
生态的 nvm
及 go
生态的 gvm
等等。但是在 Lua
这里就没有这种东西了,也可能是我没有找到,据个人猜测,可能是因为 Lua
语言的设计之初就是针对轻量级的,这种繁复的东西没有做;也可能是受众大部分都不是纯软件开发的,所以没有纯软件哪里的思想。
总之,没有轮子就要自己造轮子,或者用其他的方式实现。这里使用源码编译安装,并自定义路径的方式。
编译环境配置
$ sudo apt install libreadline-dev gcc
下载源码
提示
这里以 Lua5.1.5
和 Lua5.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.5
与 lua-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.5
与 lua-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