OCaml: не удается запустить utop после установки

Я пытаюсь изучить OCaml через книгу Real World OCaml. У них есть руководство, по которому я должен установить пакет Core и утопить его. Однако, хотя я, кажется, успешно устанавливаю оба из них с помощью Opam, ни один из них не работает, когда я пытаюсь их использовать.

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

$ opam install utop core
[NOTE] Package utop is already installed (current version is 1.10).
[NOTE] Package core is already installed (current version is 109.55.02).

Однако, когда я пытаюсь ввести «utop», чтобы запустить utop, это не сработает.

$ utop
bash: utop: command not found

То же самое, когда я пытаюсь открыть ядро:

$ open Core.Std
Couldn't get a file descriptor referring to the console

Что тут происходит? Я новичок в программировании, поэтому в установке может быть что-то, чего я просто не понимаю.


person akim330    schedule 23.12.2013    source источник
comment
Можете ли вы попробовать выполнить в терминале это: eval `opam config env`   -  person Kakadu    schedule 23.12.2013
comment
Я пробовал это, но по какой-то причине не получилось. Смотрите мой ответ ниже.   -  person akim330    schedule 24.12.2013
comment
Повторное открытие терминала сработало для меня, установка Opam вносит изменения в .bashrc, который требует перезапуска bash.   -  person kristianp    schedule 19.03.2014


Ответы (4)


Что касается utop, похоже, что у вас в $PATH. Ты сделал:

$ eval `opam config env`

Если вы хотите, чтобы opam правильно настраивался в ваших новых оболочках, вам следует добавить в свой .bashrc следующее:

. ~/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true

Что касается невозможности открыть Core.Std, вы, конечно, не сможете открыть его в своей оболочке, эта команда должна быть введена в utop.

person Daniel Bünzli    schedule 23.12.2013
comment
По-прежнему не работает. См. Мой ответ ниже, чтобы увидеть код, который возвращается, когда я ввожу eval 'opam config env'. Может быть, это даст некоторое понимание? Спасибо за ответ! - person akim330; 24.12.2013
comment
Сработало у меня! Спасибо. - person DCS; 18.06.2014

Методы установки OCaml utop в ubuntu в большинстве онлайн-ресурсов кажутся вводящими в заблуждение пользователей. Дело в том, что при установке opam с помощью команды sudo apt-get нет необходимости снова устанавливать OCaml с помощью той же команды, потому что OCaml поставлялся с установкой opam. поэтому единственное, что вам нужно сделать, это правильно инициализировать состояние opam, которое определяет корень OPAM в вашей домашней папке.

Поэтому, если вы установили какой-либо OCaml ранее, сначала удалите его, чтобы избежать конфликтов.

sudo apt-get purge --auto-remove ocaml-source
sudo apt-get purge opam

затем установите opam.

sudo add-apt-repository ppa:avsm/ppa
sudo apt-get update
sudo apt-get install opam

инициализировать состояние opam

opam init

если отображается предупреждение об отсутствии зависимости, попробуйте эти команды,

opam install depext
opam depext conf-m4.1

затем проверьте установку ocaml,

eval 'opam config env'
ocaml

затем установите UTop,

opam install utop
eval `opam config env`
utop

для получения подробной информации и обработки ошибок обратитесь к этому сообщение в блоге.

person ThilankaD    schedule 03.07.2016

Итак, я попробовал eval 'opam config env', и вот что произошло:

$ eval 'opam congif env'
CAML_LD_LIBRARY_PATH="/home/jharvard/.opam/4.01.0/lib/stublibs"; export CAML_LD_LIBRARY_PATH; 
PERL5LIB="/home/jharvard/.opam/4.01.0/lib/perl5"; export PERL5LIB;
OCAML_TOPLEVEL_PATH="/home/jharvard/.opam/4.01.0/lib/toplevel"; export OCAML_TOPLEVEL_PATH;
MANPATH="/home/jharvard/.opam/4.01.0/man:"; export MANPATH; PATH="/home/jharvard/.opam/4.01.0/bin:/etc/log50.d:/etc/log50.d:/usr/lib/qt-3.3/bin:/etc/log50.d:/usr/libexec/lightdm:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/jharvard/.local/bin:/home/jharvard/bin"; export PATH;

А то еще пишет, что не найдена команда "утоп". Пути, указанные выше, кажутся мне тарабарщиной. Сможет ли кто-нибудь взглянуть на то, что он вернул, чтобы увидеть, указывает ли это, в чем может быть проблема?

person akim330    schedule 24.12.2013
comment
Ваша цитата неверна. Вам нужен такой, как в букве А. Он расположен на моей клавиатуре рядом с кнопкой «1». - person Kakadu; 24.12.2013
comment
Дох. Это именно то. Я понятия не имел, что этот персонаж существует. Большое спасибо! - person akim330; 24.12.2013

Мой Ubuntu-14 / Mint тоже был "боркирован"

Прочитав раздел Ubuntu здесь; https://opam.ocaml.org/doc/Install.html

И удаляя .opam / dir, прежде чем снова делать;

  1. opam init
  2. opam install utop

починил это !

person kjetildm    schedule 03.01.2015