Всякий раз, когда вы получаете сообщение 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