Установка OCaml, не находит двоичные файлы - PullRequest
4 голосов
/ 13 ноября 2010

Я пытаюсь установить и запустить target-caml на удаленном сервере Unix.

Я успешно собрал и установил все файлы, включенные в пакет ocaml.Тем не менее, при попытке использовать его, например:

[~]# ocamllex

дает:

-bash: /home1/PATHTOMYHOME/local/bin/ocamllex: /usr/local/bin/ocamlrun: bad interpreter: No such file or directory

Есть ли способ заставить его искать в другом месте ocamlrun?Правильный каталог находится в переменной $ PATH (ocamlrun работает).

Ответы [ 2 ]

2 голосов
/ 13 ноября 2010

В системах Unix исполняемые файлы байт-кода Ocaml начинаются со строки shebang , которая указывает путь к интерпретатору байт-кода (ocamlrun).Кажется, что ваши исполняемые файлы начинаются с #!/usr/local/bin/ocamlrun.Измените это на /home1/PATHTOMYHOME/local/bin/ocamlrun.

Если вы хотите, чтобы ocamlrun был найден в $PATH, измените строку shebang на #!/usr/bin/env ocamlrun.

Вот способ изменитьпуть к исполняемым файлам байт-кода в текущих каталогах, оставляя другие файлы без изменений.Удалите файлы *.orig после проверки работ по замене.

perl -i.orig -pe 's~^#!.*/ocamlrun.*~#!/usr/bin/env ocamlrun~ if $.==1; close ARGV if eof' *

Я предлагаю вам скомпилировать OCaml с ./configure -prefix /home1/PATHTOMYHOME/local.Таким образом, все программы будут автоматически выглядеть в нужных каталогах.

1 голос
/ 13 ноября 2010

Вы можете передать имя файла байт-кода на ocamlrun:

/correct/path/to/ocamlrun /home1/PATHTOMYHOME/local/bin/ocamllex

С другой стороны, он может просто работать для редактирования первой строки файла байт-кода: есть #! и жестко закодированный путь там. Остальная часть файла является байт-кодом, но если ваш редактор не связывается с ним, есть шанс ...

В качестве третьего решения используйте встроенную версию ocamllex.opt: она не зависит от ocamlrun.

...