luarocks lyaml installation error
在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?
-
您正在使用什么操作系统? 只需先手动安装libyaml,然后使用YAML_DIR luarocks参数将路径设置为已安装的库即可。
每当您收到LuaRocks消息说you may have to install ____ in your system时,这意味着rockspec具有外部依赖关系。
安装外部依赖项
满足此依赖性的方法是使用系统的适当方式安装软件包:如果使用Debian / Ubuntu,使用apt-get,如果使用macOS,可能使用Homebrew,等等。
请注意,要构建代码,在具有dev软件包概念的系统(例如大多数Linux发行版)中,需要同时安装主库软件包和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/
当系统在子目录中安装头或库时,会发生这种情况。例如,对于使用OpenSSL的Mac上的LuaSec,有时必须使用如下路径名:
luarocks install luasec OPENSSL_INCDIR=/usr/local/opt/openssl/include OPENSSL_LIBDIR=/usr/local/opt/openssl/lib