emacs ocaml REPL: Поиск программы: нет такого файла или каталога, ocaml

Я пытаюсь настроить OCaml в Ubuntu 16.04.3 на VirtualBox. Я новичок во всех них; пожалуйста, простите мое невежество. Я установил opam с помощью

wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin

и добавил

. /home/<username>/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true

в мой файл ~/.profile согласно инструкциям, следующим за установкой opam. Я установил tuareg с помощью opam install tuareg и GNU emacs 24.5.1 с помощью sudo apt-get install emacs.

Когда я попытался использовать ocaml REPL, набрав M-x run-ocaml и return в emacs, я получил OCaml REPL to run: ocaml; когда я снова нажал enter, я получил

Searching for program: no such file or directory, ocaml

Затем я попробовал M-x shell, чтобы посмотреть, могу ли я запустить ocaml из оболочки, и я заметил, что мне нужно использовать opam switch каждый раз, когда я хочу запустить ocaml из терминала/оболочки; если я прямо наберу ocaml, я получу

The program 'ocaml' is currently not installed. You can install it by typing: sudo apt-get install ocaml-interp

Я не уверен, имеет ли это какое-либо отношение к моей проблеме.

В качестве второй попытки я вернулся в emacs и набрал M-x run-ocaml, нажал return и снова нажал return в OCaml REPL to run: (на этот раз без ocaml). Это открыло новый буфер:

дескриптор выходного файла закрыт

Но когда я попытался ввести что-то в новый буфер, скажем, 1+1;;, и нажал shift-return, я получил Output file descriptor of OCaml is closed, как показано выше.

Я читал разные документы и темы для получения инструкций, но ни одна из них не описывает мою ситуацию. Любая помощь приветствуется!


person largecats    schedule 18.12.2017    source источник


Ответы (2)


Возможно, вам следует попробовать что-то вроде M-x run-ocaml, return, а затем ввести что-то вроде /usr/bin/opam config exec -- ocaml (или любой другой путь к вашей установке opam) вместо ocaml

person ghilesZ    schedule 18.12.2017

Поэтому я решил проблему, следуя realworldocaml. Я понял, что у меня было несколько проблем в моем посте, поэтому я использую этот ответ, чтобы поделиться решением каждой из них, как это предлагается в ссылке.

Ответ @ghilesZ прекрасно решает проблему в заголовке моего вопроса (спасибо!). Я должен был добавить путь ocaml либо в команду M-x (как следует из приведенного выше ответа), либо в файл конфигурации ~/.emacs (как следует из ссылки). Путь можно получить, набрав which ocaml в терминале после выполнения шага ниже.

Необходимость печатать

eval `opam config env`

для запуска ocaml из терминала можно решить, добавив строку в файл ~/.bashrc. Это связано с тем, что ввод команды в текущей оболочке настраивает только текущую оболочку. Чтобы будущие оболочки могли автоматически настраивать вещи, его необходимо добавить в сценарии входа в систему.

person largecats    schedule 18.12.2017