ошибка установки luarocks lyaml - PullRequest
0 голосов
/ 28 июня 2018

на 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

Луа версия: 5.1.5

Как установить YAML в систему, чтобы начать использовать lyaml rock?

1 Ответ

0 голосов
/ 30 июня 2018

Всякий раз, когда вы получаете сообщение LuaRocks, говорящее you may have to install ____ in your system, это означает, что у горной спецификации есть внешняя зависимость .

Установка внешних зависимостей

Способ удовлетворения этой зависимости заключается в установке пакета с использованием соответствующих средств вашей системы: при использовании 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/

Такая ситуация возникает, когда система устанавливает заголовки или библиотеки в подкаталог. Например, для LuaSec на Mac, который использует OpenSSL, иногда необходимо использовать имена путей, подобные этому:

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

...