首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地luarocks包安装(luarepl)不工作

本地luarocks包安装(luarepl)不工作
EN

Stack Overflow用户
提问于 2017-11-13 15:09:00
回答 1查看 1.6K关注 0票数 3

我对luarocks很陌生,我只是试着安装luarepl。安装工作显然进行得很顺利:

代码语言:javascript
复制
$ luarocks install luarepl
Installing https://luarocks.org/luarepl-0.8-1.rockspec...
Using https://luarocks.org/luarepl-0.8-1.rockspec... switching to 'build' mode
Updating manifest for /Users/me/.luarocks/lib/luarocks/rocks-5.1
luarepl 0.8-1 is now built and installed in /Users/me/.luarocks (license: MIT/X11)

但是,如果我试图启动可执行文件,那么安装似乎就坏了:

代码语言:javascript
复制
$ ~/.luarocks/bin/rep.lua
/usr/local/bin/lua5.1: ...cks/lib/luarocks/rocks-5.1/luarepl/0.8-1/bin/rep.lua:23: module 'repl.console' not found:
    no field package.preload['repl.console']
    no file './repl/console.lua'
    no file '/usr/local/share/lua/5.1/repl/console.lua'
    no file '/usr/local/share/lua/5.1/repl/console/init.lua'
    no file '/usr/local/lib/lua/5.1/repl/console.lua'
    no file '/usr/local/lib/lua/5.1/repl/console/init.lua'
    no file './repl/console.so'
    no file '/usr/local/lib/lua/5.1/repl/console.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
    no file './repl.so'
    no file '/usr/local/lib/lua/5.1/repl.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
    [C]: in function 'require'
    ...cks/lib/luarocks/rocks-5.1/luarepl/0.8-1/bin/rep.lua:23: in main chunk
    [C]: ?

我查看了~/..luarocks dir:

代码语言:javascript
复制
$ cd ~ ; find .luarocks
.luarocks
.luarocks/bin
.luarocks/bin/rep.lua
.luarocks/config.lua
.luarocks/lib
.luarocks/lib/luarocks
.luarocks/lib/luarocks/rocks-5.1
.luarocks/lib/luarocks/rocks-5.1/luarepl
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/bin
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/bin/rep.lua
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/doc
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/doc/COPYING
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/doc/IDEAS.md
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/doc/plugins.md
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/doc/README.md
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/doc/Roadmap.md
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/luarepl-0.8-1.rockspec
.luarocks/lib/luarocks/rocks-5.1/luarepl/0.8-1/rock_manifest
.luarocks/lib/luarocks/rocks-5.1/manifest
.luarocks/share
.luarocks/share/lua
.luarocks/share/lua/5.1
.luarocks/share/lua/5.1/repl
.luarocks/share/lua/5.1/repl/console.lua
.luarocks/share/lua/5.1/repl/init.lua
.luarocks/share/lua/5.1/repl/plugins
.luarocks/share/lua/5.1/repl/plugins/autoreturn.lua
.luarocks/share/lua/5.1/repl/plugins/completion.lua
.luarocks/share/lua/5.1/repl/plugins/example.lua
.luarocks/share/lua/5.1/repl/plugins/filename_completion.lua
.luarocks/share/lua/5.1/repl/plugins/history.lua
.luarocks/share/lua/5.1/repl/plugins/keep_last_eval.lua
.luarocks/share/lua/5.1/repl/plugins/linenoise.lua
.luarocks/share/lua/5.1/repl/plugins/pretty_print.lua
.luarocks/share/lua/5.1/repl/plugins/rcfile.lua
.luarocks/share/lua/5.1/repl/plugins/rlwrap.lua
.luarocks/share/lua/5.1/repl/plugins/semicolon_suppress_output.lua
.luarocks/share/lua/5.1/repl/sync.lua
.luarocks/share/lua/5.1/repl/utils.lua

我能找到那些东西。我尝试在config.lua中添加一行,从本地安装加载包,但没有结果:

代码语言:javascript
复制
$ cat ~/.luarocks/config.lua
local_by_default=true

(移除它没有效果)

我错过了什么明显的步骤吗?

在没有参数的情况下运行luarocks将给我提供如下信息:

代码语言:javascript
复制
CONFIGURATION
    Lua version: 5.1
    Configuration files:
        System: /usr/local/etc/luarocks51/config-5.1.lua (ok)
        User  : /Users/me/.luarocks/config.lua (ok)

    Rocks trees in use:
        /Users/me/.luarocks ("user")
        /usr/local ("system")

用户摇滚树似乎不在包路径中:

代码语言:javascript
复制
$ lua
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> print(package.path)
./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua

为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-13 15:19:58

来自https://github.com/luarocks/luarocks/wiki/Using-LuaRocks

大多数LuaRocks安装将以两棵岩石树为特色:

  • “系统”岩石树(默认使用)
  • “用户”岩石树

为了能够使用该模块,我们需要确保Lua在运行dkjson.lua时能够找到该require("dkjson")文件。您可以从Lua环境中检查Lua路径,使用

代码语言:javascript
复制
print(package.path)
print(package.cpath)

这些变量可以使用LUA_PATHLUA_CPATH环境变量从外部Lua预配置.

如果您同时在Linux和Mac上的默认目录(/usr/local )中安装了Lua和LuaRocks,那么"system“树就是/usr/local,默认情况下它可以工作。但是,默认情况下,Lua不会检测到“用户”树(用于安装没有管理权限的岩石)。为此,我们需要配置这些环境变量。

LuaRocks提供了一种半自动的方式来实现这一点。如果键入以下命令:

代码语言:javascript
复制
luarocks path --bin

它将打印适合您的平台设置您的环境的命令。在典型的Unix终端环境中,您可以键入以下内容:

代码语言:javascript
复制
eval $(luarocks path --bin)

它会将这些变化暂时应用到你的外壳上。要永久设置这些变量,您必须将环境变量配置为shell配置(例如,如果您的shell是Bash,则将上面的行添加到您的.bashrc文件中)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47267469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档