Как установить библиотеки для Lua5.2 и 5.1 использование Luarocks?
Я пишу небольшой проект Lua и использую Luarocks для установки моих сторонних зависимостей. Версия Lua по умолчанию на моей машине составляет 5,2 и до этого момента все работает нормально.
сегодня я наткнулся на проблему, которая меня смущает. Я хочу запустить свою программу на Lua 5.1 и Luajit, чтобы увидеть, будет ли она также работать на этих версиях, но мне трудно получить Luarocks для загрузки соответствующих версий зависимостей. В качестве последнего курорт hack, я пытался сказать Lua5.1 для использования библиотек 5.2, установленных Luarocks (установивLUA_PATH
переменная окружения с тем же значением, что и LUA_PATH_5_2
) но, к сожалению, этого недостаточно: мой проект зависит от LuaFileSystem, модуля на основе C, поэтому мне нужно будет установить отдельные версии для 5.1 и 5.2.
что мне нужно сделать, чтобы установить 5.1 и 5.2 версии зависимостей? Нужно ли передавать некоторые параметры в? Нужно ли мне иметь несколько экземпляров Luarocks, установленных на моей машине? Одна вещь, которая меня смущает, это то, что внутри .luarocks
папка вещи классифицируются по 5.2 папку (~/.luarocks/share/lua/ 5.2/), предполагая, что, возможно, есть способ установить вещи в sibling
5 ответов
на основе вашей ссылки на ~/.luarocks/share/lua/5.2/
, похоже, вы используете систему Unix (Linux или Mac). Вы можете установить последнюю версию LuaRocks дважды, как для Lua 5.1, так и для Lua 5.2 следующим образом:
./configure --lua-version=5.1 --versioned-rocks-dir
make build
sudo make install
и затем снова для 5.2:
./configure --lua-version=5.2 --versioned-rocks-dir
make build
sudo make install
это поможет вам /usr/local/bin/luarocks-5.1
и /usr/local/bin/luarocks-5.2
. Если вы установили Lua 5.1 и 5.2 в /usr / local/, и каждый из них будет использовать свой ~/.luarocks/lib/luarocks/rocks-5.x/
запись для дерева пользователей (и /usr/local/lib/luarocks/rocks-5.x
для системного дерева), и установите модули к правильное расположение в /usr/share/lua/5.x/
и ~/.luarocks/share/lua/5.x/
(и аналогично для lib
) надлежащим образом.
как предложил moteus, я решил установить вторую версию Luarocks для Lua 5.1. Но он использует Windows, и я использую Linux, поэтому вот что я сделал:
загрузите источник для последней версии Luarocks на сайт Luarocks
-
из исходного каталога, запустите
./configure
сценарий:/configure --prefix="${HOME}/.luarocks51" --lua-suffix=5.1
настройка префикса говорит Luarocks поставить свои вещи на
.luarocks51
папка, рядом с существующей.luarocks
папка из моей установки 5.2 Luarocks. Параметр lua-suffix указывает Luarocks использовать Lua 5.1 вместо версии lua по умолчанию в моей машине (5.2). Это зависит от того, что я назвал интерпретатор для Lua 5.1 какlua5.1
(Debian установил мой на/usr/bin/lua5.1
). Наконец, Luarocks удалось автоматически определить, где установлены заголовки и библиотеки 5.1 (/usr/include/lua5.1/
) но если бы это было не так, я думаю, я мог бы указать это с помощью--with-lua-include
и--with-lua-lib
параметры. скомпилировать Luarocks с
make
установить ему с
make isntall
(нет необходимости в Sudo, так как я устанавливаю его в локальном каталоге).-
настройка 5.1 окружающей среды использовать библиотеки, загруженные Luarocks. Я добавил к своему следующее .bashrc следующее:
export PATH=$PATH:~/.luarocks/bin:~/.luarocks51/bin export LUA_CPATH=";;${HOME}/.luarocks51/lib/lua/5.1/?.so" export LUA_PATH=";;${HOME}/.luarocks51/share/lua/5.1/?.lua;${HOME}/.luarocks51/share/lua/5.1/?/init.lua" export LUA_CPATH_5_2=";;${HOME}/.luarocks/lib/lua/5.2/?.so" export LUA_PATH_5_2=";;${HOME}/.luarocks/share/lua/5.2/?.lua;${HOME}/.luarocks/share/lua/5.2/?/init.lua"
конфигурация 5.1 также работает для Luajit.
-
исполняемый файл для версии 5.1 luarocks называется
luarocks-5.1
:luarocks-5.1 install lfs
вот как я это делаю. https://gist.github.com/moteus/6823437 Мой английский не очень хорош. Но я думаю, что это может быть полезно.
У меня была такая же проблема. и хотел что-то более автоматическое, что я бы использовал повторно.
Я очень привык к Ruby RVM. И поэтому я хотел вдохновиться этим. Я просто делаю 3 быстрые функции bash, чтобы покрыть мои потребности. Не стесняйтесь использовать их, но они тестируются только на ArchLinux
используя homebrew, вы можете сделать:
brew install lua51 # Lua 5.1
brew install lua # Lua latest
Luarocks поставляется с Lua, поэтому вы можете сделать:
# Install Lua 5.1 version of any package
luarocks-5.1 install moonscript
# Install Lua latest version of any package
luarocks install moonscript