Не могу запустить luarocks, tonumber - нулевое значение
Чтобы установить luarocks, я скачал самый последний (2.0.11) файл tar.gx отсюда. Я распаковал его и следовал инструкциям.
$ ./configure
Lua interpreter found: /usr/local/bin/lua...
Lua version detected: 5.1
Looking for Lua...
lua found in $PATH: /usr/local/bin
Checking Lua includes...
lua.h found in /usr/local/include/lua.h
curl found at /usr/bin
openssl found at /opt/local/bin
Configuring for system...
Darwin
Configuring for architecture...
i386
Writing configuration...
Installation prefix: /usr/local
LuaRocks configuration directory: /usr/local/etc/luarocks
Using Lua from: /usr/local
Done. You can now run 'make' to build.
Я тогда побежал sudo make install
и, наконец, попытался установить пакет, но когда я пытаюсь запустить его, я получаю эту ошибку:
$ sudo luarocks install lpeg
/usr/local/bin/lua: /usr/local/share/lua/5.1//luarocks/cfg.lua:355: attempt to call global 'tonumber' (a nil value)
stack traceback:
/usr/local/share/lua/5.1//luarocks/cfg.lua:355: in main chunk
[C]: in function 'require'
/usr/local/share/lua/5.1//luarocks/command_line.lua:6: in main chunk
[C]: in function 'require'
/usr/local/bin/luarocks:4: in main chunk
[C]: ?
Запуск lua вручную, tonumber работает просто отлично, как и все остальное. Я не знаю, почему это терпит неудачу здесь.
1 ответ
Вверху cfg.lua нужно добавить
local tonumber = tonumber
перед module
вызов. Вы можете включить tonumber
в обеих строках списка аналогичные локальные определения. Вы можете сделать эти изменения в установленной версии в /usr/local/share/lua/5.1//luarocks/cfg.lua или в исходной версии и make install
снова.
Это ошибка в luarocks, и она будет исправлена в следующем выпуске.
Мой модифицированный luarocks-2.0.11/src/luarocks/cfg.lua содержит:
local rawset, next, table, pairs, require, io, os, setmetatable, pcall, ipairs, package, type, assert, tonumber, _VERSION =
rawset, next, table, pairs, require, io, os, setmetatable, pcall, ipairs, package, type, assert, tonumber, _VERSION
module("luarocks.cfg")