[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Introducing luavm - Lua Version Manager
- From: Adrián Pérez de Castro <aperez@...>
- Date: Wed, 25 May 2016 19:00:19 +0200
Quoting Peter Melnichenko (2016-05-25 15:03:58)
> On Mon, May 23, 2016 at 12:02 AM, Dhaval Kapil <email@example.com> wrote:
> > Recently, I was working in lua and needed to switch between different
> > versions frequently. This caused me various issues, like reinstalling
> > versions of lua, reinstalling luarocks to with the new lua versions, etc. I
> > even messed up with my installation somehow. To help deal with these
> > problems and being inspired by the usefulness of 'nvm'(Node Version Manager)
> > and 'rvm'(Ruby Version Manager) I decided to develop 'luavm'.
> This looks great! Unfortunately it doesn't set LUA_PATH and LUA_CPATH
> and it also doesn't add directory where LuaRocks puts scripts to PATH,
> but that can be fixed by running 'eval `luarocks path --bin`' after switching to
> a new environment.
> hererocks (https://github.com/mpeterv/hererocks) was mentioned here
> but it's not really a version manager, more of an installation script that
> takes care of environment isolation. Personally I use it to install various
> version combination into ~/lua51, ~/lj2, ~/lua53-nocompat, etc, then
> add a default
> like ~/lua53/bin to PATH in .bashrc and use other environments directly
> when I need to, e.g. run ~/lua51/bin/lua or ~/lj2/bin/busted.
> Perhaps luavm could use hererocks for build step to avoid having
> to run 'eval `luarocks path --bin`' and to exploit some of its options,
> like choosing compat flags, building without readline, etc.
Something that I always wanted was something for Lua+LuaRocks which would be
the equivalent of virtualenv (for Python+Pip): using the Lua binaries and
library installed by the system package manager, and bootstrapping LuaRocks
into a separate directory, and then providing a way to “activate” one of
these separate directories (= environments).
A couple of months ago I decided to bite the bullet and implement RockZ ,
which is a plugin for Zsh which allows to do things like:
# Only needed once, for configuration
% rockz profile default --lua=/usr/bin/lua \
# Bootstraps a LuaRocks environment named “myproject” (into the
# ~/.rockenvs/myproject directory) and activates it. LuaRocks will
# install and manage packages inside the environment directory.
% rockz new myproject
% luarocks install busted
% which lua luarocks
% rockz deactivate # Go back to the system-wide Lua+LuaRocks
# Later on...
% rockz activate # Sets $PATH, $LUA_PATH, and $LUA_CPATH
Probably I should cut a release soon and send a proper announcement post to
the list... Also if there are enough people interested into a version that
works with Bash, it should be easy to port it (though I do not use Bash
myself much anymore, I could event try and help with it :P).