使用 Luasec 会出现“模块 'ssl.core' 未找到”错误

我正在 Ubuntu 16.04 上运行 Lua 5.1

OpenSSL 的版本是根据 dpkg -l | grep openssl 命令得到的 1.0.2g-1ubuntu4.5

我下载了 Luasec 0.5.1 的源码

INSTALL 文件中指示运行 lua options.lua -g /usr/include/openssl/ssl.h > options.h 来生成适合你的 ssl 版本的 options.h。

我做了这个并使用 make linux 编译没有错误。 接着使用 sudo make install 进行安装

install -d //usr/share/lua/5.1/ssl //usr/lib/lua/5.1
install -D ssl.so //usr/lib/lua/5.1
install -m644 -D ssl.lua //usr/share/lua/5.1
install -m644 -D https.lua //usr/share/lua/5.1/ssl

在我的代码中,我从以下代码开始

local socket = require("socket")
local smtp = require("socket.smtp")
local ssl = require("ssl")

运行这段代码时,ssl 行会出现以下错误

lua: /usr/local/share/lua/5.1/ssl.lua:7: module 'ssl.core' not found:
no field package.preload['ssl.core']
no file 'ssl/core.lua'
no file '/usr/local/share/lua/5.1/ssl/core.lua'
no file '/usr/local/share/lua/5.1/ssl/core/init.lua'
no file '/usr/local/luajit/share/luajit-2.1.0-beta2/ssl/core.lua'
no file './ssl/core.so'
no file '/usr/local/lib/lua/5.1/ssl/core.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './ssl.so'
no file '/usr/local/lib/lua/5.1/ssl.so'
no file '/usr/local/lib/lua/5.1/loadall.so'

我在源码中找不到 core.lua 文件。它在这里寻找什么?

点赞
用户107090
用户107090
`ssl.core` 是在 `ssl.so` 中定义的,查看 `luaopen_ssl_core`。

但是,`ssl.so` 被安装在 `/usr/lib/lua/5.1` 中,而不是在错误信息中列出的默认路径中找到。

要么将其移至 `/usr/local/lib/lua/5.1/ssl.so`,要么更改 `LUA_CPATH` 或 `package.cpath` 以包含 `/usr/lib/lua/5.1/`。

安装说明告诉您在顶层 Makefile 中调整 `LUAPATH` 和 `LUACPATH`。 
2016-12-03 10:46:01