luarocks lyaml 安装错误

luarocks install lyaml 过程中,我遇到了如下错误:

Error: Could not find expected file libyaml.a, or libyaml.so, or libyaml.so.* for YAML -- you may have to install YAML in your system and/or pass YAML_DIR or YAML_LIBDIR to the luarocks command. Example: luarocks install lyaml YAML_DIR=/usr/local

lua 版本:5.1.5

我该如何在系统中安装 YAML,以开始使用lyaml rock?

点赞
用户1793220
用户1793220

当你收到一个 LuaRocks 消息,提醒你可能需要在你的系统中安装某些内容时,那就说明这个 rockspec 有一个外部依赖。external dependency

安装外部依赖

满足此依赖的方法是使用系统的适当方式安装这个包:如果使用的是 Debian/Ubuntu,就用 apt-get 安装;如果使用 macOS,可能会使用 Homebrew 等。

需要注意的是,为了构建代码,在那些拥有开发包概念的系统(例如大多数的 Linux 发行版)中,你需要同时安装主要的 library 包和 dev 包(包含编译所需的头文件)。例如,对于 Debian/Ubuntu,为了满足此依赖,你需要运行 apt-get install libyaml libyaml-dev

不幸的是,在不同的系统和发行版中,这些名称并不完全一致:在一个系统中,一个模块可能被称为 ncurses-dev,而在另一个系统中可能被称为libncurses6w-dev等。所以在你的特定情况下,你需要在系统中搜索正确的 YAML[库名称(提供 libyaml 的包)]。

外部依赖安装完成后...

使用系统包管理器安装库通常会将所需文件自动安装到 LuaRocks 自动检测到的位置,因此再次运行

luarocks install lyaml

即可找到 libyaml 文件并继续安装。

如果外部依赖是安装在非标准位置上的

如果失败了,可以找到库(libyaml.so)和头文件(yaml.h)安装的目录,并告诉 LuaRocks。例如,如果 libyaml.so 安装在某些非标准位置(如 /opt/lib/yaml/libyaml.so),头文件在 /opt/include/yaml-1/yaml.h,则可以这样做:

luarocks install lyaml YAML_LIBDIR=/opt/lib/yaml/ YAML_INCDIR=/opt/include/yaml-1/

这种情况发生在系统将头文件或库安装在子目录中时。例如,在 Mac 上使用 OpenSSL 的 LuaSec 时,有时需要使用这样的路径名:

luarocks install luasec OPENSSL_INCDIR=/usr/local/opt/openssl/include OPENSSL_LIBDIR=/usr/local/opt/openssl/lib

2018-06-29 21:13:54