Ссылка на библиотеку по нестандартному пути при установке пакета opam - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь установить пакет opam (conf-zmq.0.1) в кластере. У меня нет доступа root, и я вручную установил библиотеку zmq в / path / to / libzmq.

Команда "opam install zmq" завершается неудачно в следующей точке:

[ERROR] The compilation of conf-zmq failed at "/hpc/eb/compilerwrappers/compilers/cc test.c -I/usr/local/include -L/usr/local/lib -lzmq".

Это кажется простым, но после просмотра руководства я не смог найти способ сказать оператору измените -L / usr / local / lib на -L / path / на / libzmq.

Любая помощь по этому вопросу будет очень признателен.

1 Ответ

1 голос
/ 30 марта 2020

Невозможно что-либо рассказать оператору о правилах компиляции C, ни о правилах компоновки OCaml, ни о каких-либо других правилах компиляции, поскольку opam намного выше этого. Ответственность opam заключается в том, чтобы найти пакет с наилучшей подходящей версией, загрузить его и установить, используя сценарии сборки и настройки, предоставляемые сопровождающим пакета.

Хотя opam предоставляет средства для параметров конфигурации пакета, сопровождающий conf-zmq не использует их и не обеспечивает какой-либо параметризации для своего пакета. На самом деле, нет других способов пройти тест установки пакета conf-zmq, кроме как установить их в жестко заданном месте. Вы можете отправить сообщение об ошибке или обратиться к сопровождающему за дальнейшей поддержкой. Вы можете найти все ссылки в файле opam пакета.

Хорошая новость заключается в том, что существует обходной путь. Если описание пакета не работает, вы всегда можете загрузить пакет в локальную файловую систему, исправить его и прикрепить фиксированную версию. И opam теперь будет использовать вашу локальную версию. Если вы хотите распространять свой пакет, вам, конечно, нужно будет сделать sh ваши изменения в апстриме (если вы хотите, чтобы он был доступен для широкой публики c (т.е. через ocaml.org), или просто иметь свой собственный). репозиторий opam (который может содержать только один пакет или несколько пакетов).

Но для начала, здесь первые инструкции по вставке, сначала получите источники, либо клонировав их из репозитория GitHub или просто введя следующую команду:

opam source zmq

Затем вы можете изменить свой рабочий каталог на папку, созданную для вас opam, например, для меня это было

cd zmq.5.1.3/

Тогда (самая сложная часть) взломать пакет, чтобы сделать его устанавливаемым в вашей системе. (Первое, что вам нужно, это сбросить зависимость от поврежденного пакета conf-zmq). Как только вы будете готовы, или подумайте, что вы готовы просто сделайте

opam pin add .

, чтобы opam выбрал имена пакетов из файлов opam, но если этого не произойдет, см. opam pin --help для получения дополнительных опций. Затем он попытается установить закрепленный файл. ckage. Если это не удастся, продолжайте взламывать и делать

opam update
opam reinstall zmq # or install

Как только патч будет готов, вы можете либо встроить его в свою автоматизацию, либо создать свой собственный репозиторий opam. Это также очень просто, просто создайте новое репозиторий GitHub (или клонируйте ocaml / opam-repository, не рекомендуется), затем скопируйте определение пакета, которое вы хотели бы изменить (для нас это будет packages/zmq/zmq.5.1.3/), и примените ваши хаки. к сценариям операций и конфигурации. Если ваши хаки также содержат изменения в исходном коде zmq, вы можете отформатировать их как патчи и добавить, используя строку patches в вашем файле opam, чтобы применить их на лету.

...