我正在尝试设置一个包含lua 5.2,lua套接字库和一些其他库的nix-
shell脚本.但是,当我加载
shell时,只有Lua最终存在.
with import <nixpkgs> {}; stdenv.mkDerivation rec { name = "lua-env"; buildInputs = [ lua52Packages.lua lua52Packages.luasocket lua52Packages.luasec lua52Packages.cjson ]; }
当我运行shell时,这就是我得到的:
savanni@lapis:~ $nix-shell lua.nix [nix-shell:~]$lua Lua 5.2.3 copyright (C) 1994-2013 Lua.org,PUC-Rio > require 'socket' stdin:1: module 'socket' not found: no field package.preload['socket'] no file '/usr/share/lua/5.2/socket.lua' no file '/usr/share/lua/5.2/socket/init.lua' no file '/usr/lib/lua/5.2/socket.lua' no file '/usr/lib/lua/5.2/socket/init.lua' no file './socket.lua' no file '/usr/lib/lua/5.2/socket.so' no file '/usr/lib/lua/5.2/loadall.so' no file './socket.so' stack traceback: [C]: in function 'require' stdin:1: in main chunk [C]: in ? > [nix-shell:~]$exit savanni@lapis:~ $
解决方法
您必须设置LUA_PATH和LUA_CPATH
这个shell.nix应该可以工作,
with import <nixpkgs> {}; with luaPackages; let libs = [lua cjson luasocket luasec]; in stdenv.mkDerivation rec { name = "lua-env"; buildInputs = libs; shellHook = '' export LUA_CPATH="${lib.concatStringsSep ";" (map getLuaCPath libs)}" export LUA_PATH="${lib.concatStringsSep ";" (map getLuaPath libs)}" ''; }
要检查这些路径是否已导出,
$nix-shell --run 'echo $LUA_CPATH; echo $LUA_PATH' /nix/store/lp0ns0hjwx1klk6amnyic3f62bw7h8j7-lua-5.2.3/lib/lua/5.2/?.so;/nix/store/lp0ns0hjwx1klk6amnyic3f62bw7h8j7-lua-5.2.3/share/lua/5.2/?.so;/nix/store/ppdspfcm5nnfz0fk9zarjmpyv5lcmn18-lua5.2-cjson-2.1.0/lib/lua/5.2/?.so;/nix/store/ppdspfcm5nnfz0fk9zarjmpyv5lcmn18-lua5.2-cjson-2.1.0/share/lua/5.2/?.so;/nix/store/b71xyq7gkc8iccj6wr84zq31gqc3m9ix-lua5.2-socket-3.0-rc1/lib/lua/5.2/?.so;/nix/store/b71xyq7gkc8iccj6wr84zq31gqc3m9ix-lua5.2-socket-3.0-rc1/share/lua/5.2/?.so;/nix/store/6q8xn2bcfskmrfzql47jld5d2irvn5jr-lua5.2-sec-0.6/lib/lua/5.2/?.so;/nix/store/6q8xn2bcfskmrfzql47jld5d2irvn5jr-lua5.2-sec-0.6/share/lua/5.2/?.so /nix/store/lp0ns0hjwx1klk6amnyic3f62bw7h8j7-lua-5.2.3/lib/lua/5.2/?.lua;/nix/store/lp0ns0hjwx1klk6amnyic3f62bw7h8j7-lua-5.2.3/share/lua/5.2/?.lua;/nix/store/ppdspfcm5nnfz0fk9zarjmpyv5lcmn18-lua5.2-cjson-2.1.0/lib/lua/5.2/?.lua;/nix/store/ppdspfcm5nnfz0fk9zarjmpyv5lcmn18-lua5.2-cjson-2.1.0/share/lua/5.2/?.lua;/nix/store/b71xyq7gkc8iccj6wr84zq31gqc3m9ix-lua5.2-socket-3.0-rc1/lib/lua/5.2/?.lua;/nix/store/b71xyq7gkc8iccj6wr84zq31gqc3m9ix-lua5.2-socket-3.0-rc1/share/lua/5.2/?.lua;/nix/store/6q8xn2bcfskmrfzql47jld5d2irvn5jr-lua5.2-sec-0.6/lib/lua/5.2/?.lua;/nix/store/6q8xn2bcfskmrfzql47jld5d2irvn5jr-lua5.2-sec-0.6/share/lua/5.2/?.lua
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。