undefined symbol: luaopen_LuaXml - lua

I had installed luaxml module using luarocks. I had used the luaxml to call in a lua script. But getting an error
Lua script:
xml = require("LuaXml");
local xobj = xml.eval('<Cmd Message="Hello"/>');
session:consoleLog("INFO","The message in the XML is "..xobj["Message"].."\n");
Error:
mod_lua.cpp:203 error loading module 'LuaXml' from file '/usr/local/lib/lua
/5.2/LuaXML_lib.so': /usr/local/lib/lua/5.2/LuaXML_lib.so: undefined symbol:
luaopen_LuaXml
stack traceback:
[C]: ?
[C]: in function 'require'
I had seen the concept of add libraries to Lua dynamically but i couldn't understand. Can anyone help me out. Briefly so that how to link the core module luaxml with the script.
Another question how can i test whether the installed module luaxml through luarocks is installed or not.

The output of nm -g /usr/lib/lua/5.1/LuaXML_lib.so tells us that this file exports luaopen_LuaXML_lib, not luaopen_LuaXML, which is what require("LuaXml") needs.
Now I don't know why require("LuaXml") is opening /usr/lib/lua/5.1/LuaXML_lib.so. It should be looking for LuaXM.so or LuaXml.lua, in this order.
LuaXML works by loading LuaXml.lua, which does require("LuaXML_lib"). This then will load LuaXML_lib.so.
Perhaps there is a mistake in your LUA_CPATH or package.cpath.

Related

No LuaRocks module found for 'bit'

I am trying to run a code using torch7 and LUA and I get this error.
usr/local/torch/install/share/lua/5.2/trepl/init.lua:389: module 'bit' not found: No LuaRocks module found for 'bit'
no field package.preload['bit']
no file '/root/.luarocks/share/lua/5.2/bit.lua'
no file '/root/.luarocks/share/lua/5.2/bit/init.lua'
no file '/usr/local/torch/install/share/lua/5.2/bit.lua'
no file '/usr/local/torch/install/share/lua/5.2/bit/init.lua'
no file '/usr/local/torch/install/lib/lua/5.2/bit.lua'
no file '/usr/local/torch/install/lib/lua/5.2/bit/init.lua'
no file './bit.lua'
no file '/home/shaurovd/.luarocks/share/lua/5.2/bit.lua'
no file '/home/shaurovd/.luarocks/share/lua/5.2/bit/init.lua'
no file '/root/.luarocks/lib/lua/5.2/bit.so'
no file '/usr/local/torch/install/lib/lua/5.2/bit.so'
no file '/usr/local/torch/install/lib/lua/5.2/loadall.so'
no file './bit.so'
no file '/home/shaurovd/.luarocks/lib/lua/5.2/bit.so'
stack traceback:
[C]: in function 'error'
/usr/local/torch/install/share/lua/5.2/trepl/init.lua:389: in function 'require'
train.lua:16: in main chunk
[C]: in function 'dofile'
...ocal/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:150: in main chunk
[C]: in ?
Segmentation fault (core dumped)
I tried to install 'bit' locally in my profile as I don't have the write permission on the server (Ubuntu 18.04) I am working on using:
luarocks install --deps bit --local
But it shows: Error: No results matching query were found.
How do I solve this?
i solved it by running this command
luarocks install luaossl OPENSSL_DIR=/usr/local/kong CRYPTO_DIR=/usr/local/kong
check this post here github kong issue

trying to use "require("zip")" in my lua script,g etting error

I am trying to use require("zip"), to open the docx file formate as this comes as zip file. and I am getting these errors :
LuaJIT 2.0.5 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/
luajit-2.0.5: CVE-2015-1650.lua:24: module 'zip' not found:
no field package.preload['zip']
no file './zip.lua'
no file '/usr/local/share/luajit-2.0.5/zip.lua'
no file '/usr/local/share/lua/5.1/zip.lua'
no file '/usr/local/share/lua/5.1/zip/init.lua'
no file './zip.so'
no file '/usr/local/lib/lua/5.1/zip.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'require'
CVE-2015-1650.lua:24: in main chunk
[C]: at 0x558124871440
I can understand there are some packages which are missing, but which package.
NOTE: I have installed almost all the lua-zip, zlib, libzip package available.
Help Me!!! I am stuck here.

LuaJit won't find a library "lua-vips" installed via "luarocks"

I have this lua file:
-- test1.lua
--require "luarocks.loader"
vips = require "vips"
--vips = require "lua-vips"
local img = vips.Image.new_from_file("img1.jpg")
-- [...................]
It won't find the library "lua-vips" installed via "luarocks":
$ luajit test1.lua
luajit: error loading module 'vips' from file '/usr/local/lib/luarocks/rocks-5.3/':
cannot read /usr/local/lib/luarocks/rocks-5.3/: Is a directory
stack traceback:
[C]: at 0x0102caa660
[C]: in function 'require'
test1.lua:2: in main chunk
[C]: at 0x0102c3b8a0
Even after I add
export LUA_PATH="/usr/local/lib/luarocks/rocks-5.3/"
to ~/.profile, it won't.
The content of the directory luarocks -- lua-vips exists:
ls /usr/local/lib/luarocks/rocks-5.3/
lua-vips manifest
How how to fix this?
$ luarocks path
export LUA_PATH='/Users/my_user/.luarocks/share/lua/5.3/?.lua;/Users/my_user/.luarocks/share/lua/5.3/?/init.lua;/usr/local/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?/init.lua;/usr/local/Cellar/luarocks/3.0.1/share/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?/init.lua;./?.lua;./?/init.lua'
export LUA_CPATH='/Users/my_user/.luarocks/lib/lua/5.3/?.so;/usr/local/lib/lua/5.3/?.so;/usr/local/lib/lua/5.3/loadall.so;./?.so'
export PATH='/Users/my_user/.luarocks/bin:/usr/local/bin:/Users/my_user/.yarn/bin:/Users/my_user/.config/yarn/global/node_modules/.bin:/Users/my_user/.nix-profile/bin:/Users/my_user/.nvm/versions/node/v8.14.0/bin:/Users/my_user/.cargo/bin:/Users/my_user/.gem/ruby/2.5.1/bin:/Users/my_user/.rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/bin:/Users/my_user/.rubies/ruby-2.5.1/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/my_user/go/bin'
Your problem is that LUA_PATH doesn't work the same way PATHs usually work.
You don't give it a directory, but a template string with an ? representing the name of the library to load.
So, for example, if you want to find files in the /path/to/libs/ directory, you'd write "/path/to/libs/?.lua;/path/to/libs/?/init.lua" for the path.
If you literally add "/usr/local/lib/luarocks/rocks-5.3/", Lua will try to load that directory as a Lua file, which causes your error.
Remove that environment variable and tell us what error you get.
Also keep in mind that adding something to .profile requires logging out and back in again for the changes to take effect (or to source ~/.profile in every new shell you open)

Error - "No LuaRocks module found for fb.python"

I am trying to implement a library which is a Github project on 3D reconstruction using a single image in Ubuntu 16.04. I have installed all dependencies. I have checked if each dependency is correctly installed with help from Google searches and stackoverflow.
But, when I am executing the ./run.sh as mentioned in the Github page, I get the following error.
/home/username/torch/install/bin/luajit: /home/username/torch/install/share/lua/5.1/trepl/init.lua:389: /home/username/torch/install/share/lua/5.1/trepl/init.lua:389: module 'fb.python' not found:No LuaRocks module found for fb.python
no field package.preload['fb.python']
no file '/home/username/.luarocks/share/lua/5.1/fb/python.lua'
no file '/home/username/.luarocks/share/lua/5.1/fb/python/init.lua'
no file '/home/username/torch/install/share/lua/5.1/fb/python.lua'
no file '/home/username/torch/install/share/lua/5.1/fb/python/init.lua'
no file './fb/python.lua'
no file '/home/username/torch/install/share/luajit-2.1.0-beta1/fb/python.lua'
no file '/usr/local/share/lua/5.1/fb/python.lua'
no file '/usr/local/share/lua/5.1/fb/python/init.lua'
no file '/home/username/.luarocks/lib/lua/5.1/fb/python.so'
no file '/home/username/torch/install/lib/lua/5.1/fb/python.so'
no file '/home/username/torch/install/lib/fb/python.so'
no file './fb/python.so'
no file '/usr/local/lib/lua/5.1/fb/python.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file '/home/username/.luarocks/lib/lua/5.1/fb.so'
no file '/home/username/torch/install/lib/lua/5.1/fb.so'
no file '/home/username/torch/install/lib/fb.so'
no file './fb.so'
no file '/usr/local/lib/lua/5.1/fb.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'error'
/home/username/torch/install/share/lua/5.1/trepl/init.lua:389: in function 'require'
main.lua:8: in main chunk
[C]: in function 'dofile'
...name/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:150: in main chunk
[C]: at 0x00405d50
ls: cannot access '*.txt': No such file or directory
This issue is in Torch directory and not in the project.
So please guide me how I can resolve it or what could have gone wrong.
P.S. I am new to Linux.
You need to install Torch first. th and luarocks both commands will be available after you install Torch, see Torch

I am unable to use `ejabberd_auth` in my **helloworld** project

I am unable to use ejabberd_auth in my helloworld project.
-behaviour(ejabberd_auth).
...
....
try_register(<<"username">>, <<"example.com">>, <<"secret_password">>).
With that I get the error warning:
helloworld.erl:15: Warning: behaviour ejabberd_auth undefined
-import(ejabberd_auth, [try_register/3]).
...
....
try_register(<<"username">>, <<"example.com">>, <<"secret_password">>).
With this I get:
exception error: undefined function ejabberd_auth:try_register/3
Why am I unable to access ejabberd_auth?
I am using IntelliJ Idea, with the Erlang plugin installed.
Thank you all in advance.
UPDATE:
I'm on Ubuntu 16.04 LTS
I can get you past that error. Here's how...
When I compile a module in the erlang shell, the compiler creates a .beam file in the same directory, which allows me to call functions defined in the module. In your case, if you cd into the directory:
.../ejabberd/ebin
you will see all the ejabberd .beam files, including ejabberd_auth.beam. If you start an erlang shell in that directory, then issue your function call (don't compile anything), you won't get that error anymore.
But, then I get the error:
exception error: undefined function jid:nodeprep/1
in function ejabberd_auth:validate_credentials/3 (src/ejabberd_auth.erl, line 796)
in call from ejabberd_auth:try_register/3 (src/ejabberd_auth.erl, line`
There is no jid.beam file in that directory. But:
~/Downloads/ejabberd$ find . -name jid.beam
./deps/xmpp/ebin/jid.beam
You are going to have to figure out how to compile your module so that all the ejabberd modules are available to your program. See: ejabberd how to compile new module.
I am unable to use ejabberd_auth in my helloworld project.
Are you following a tutorial somewhere?

Resources