How to install OCaml Core library on (Arch) Linux x86_64?

$ ocaml -version The OCaml toplevel, version 4.02.1 $ opam --version 1.2.0 $ opam init $ opam install core #=== ERROR while installing camlp4.4.02.1+system ==============================# # opam-version 1.2.0 # os linux # command sh ./check-camlp4.sh # path /home/john/.opam/system/build/camlp4.4.02.1+system # compiler system (4.02.1) # exit-code 1 # env-file /home/john/.opam/system/build/camlp4.4.02.1+system/camlp4-32324-f0f09f.env # stdout-file /home/john/.opam/system/build/camlp4.4.02.1+system/camlp4-32324-f0f09f.out # stderr-file /home/john/.opam/system/build/camlp4.4.02.1+system/camlp4-32324-f0f09f.err ### stdout ### # ...[truncated] # 4.02 by switching to a local installation via `opam switch 4.02.1`. # # Here are some installation instructions for camlp4 if you obtained OCaml # via the OPAM binary packages: # # http://software.opensuse.org/download.html?project=home%3Aocaml&package=ocaml # # * Debian/Ubuntu: sudo apt-get install camlp4-extra # * RHEL/CentOS/Fedora: sudo yum install ocaml-camlp4 # ### stderr ### # ./check-camlp4.sh: line 3: camlp4orf: command not foun 

I answered yes to a question about script autocomplete during opam init . In addition, the truncated part of the error assumes the following:

Please install the system-wide version of camlp4. This is necessary because you are using OCaml 4.02.1 and the system compiler (which uses your existing installation, rather than compiling it from scratch).

If you cannot install the system-wide camlp4, then you can still use OCaml 4.02 by switching to a local installation via opam switch 4.02.1

 # pacman -S camlp4 $ opam install camlp4 $ opam info camlp4 package: camlp4 version: 4.02.1+system repository: default homepage: https://github.com/ocaml/camlp4 license: LGPLv2 installed-version: 4.02.1+system [system] 

Again...

 $ opam install core #=== ERROR while installing herelib.109.35.02 =================================# # opam-version 1.2.0 # os linux # command make # path /home/john/.opam/system/build/herelib.109.35.02 # compiler system (4.02.1) # exit-code 2 # env-file /home/john/.opam/system/build/herelib.109.35.02/herelib-31366-c61e7b.env # stdout-file /home/john/.opam/system/build/herelib.109.35.02/herelib-31366-c61e7b.out # stderr-file /home/john/.opam/system/build/herelib.109.35.02/herelib-31366-c61e7b.err ### stdout ### # ...[truncated] # ocamlfind ocamlopt -shared -linkall lib/herelib.cmxa -o lib/herelib.cmxs # ocamlfind ocamldep -syntax camlp4o -package camlp4.extend -package camlp4.quotations -package camlp4.lib -modules lib/pa_here.mli > lib/pa_here.mli.depends # ocamlfind ocamlc -c -g -syntax camlp4o -package camlp4.extend -package camlp4.quotations -package camlp4.lib -I lib -o lib/pa_here.cmi lib/pa_here.mli # + ocamlfind ocamlc -c -g -syntax camlp4o -package camlp4.extend -package camlp4.quotations -package camlp4.lib -I lib -o lib/pa_here.cmi lib/pa_here.mli # File "lib/pa_here.mli", line 1: # Error: The files /usr/lib/ocaml/pervasives.cmi # and /usr/lib/ocaml/camlp4/Camlp4.cmi make inconsistent assumptions # over interface Pervasives # Command exited with code 2. # Makefile:21: recipe for target 'build' failed ### stderr ### # File "setup.ml", line 232, characters 8-26: # Warning 3: deprecated: String.set # Use Bytes.set instead. # File "setup.ml", line 2385, characters 6-24: # Warning 3: deprecated: Lazy.lazy_from_fun # Use Lazy.from_fun instead. # E: Failure("Command ''/usr/bin/ocamlbuild' lib/herelib.cma lib/herelib.cmxa lib/herelib.a lib/herelib.cmxs lib/pa_herelib.cma lib/pa_herelib.cmxa lib/pa_here lib.a lib/pa_herelib.cmxs -use-ocamlfind -tag debug' terminated with error code 10") # make: *** [build] Error 1 

Do I need to switch to another compiler?

 $ opam switch system C system System compiler (4.02.1) -- -- 3.11.2 Official 3.11.2 release -- -- 3.12.1 Official 3.12.1 release -- -- 4.00.0 Official 4.00.0 release -- -- 4.00.1 Official 4.00.1 release -- -- 4.01.0 Official 4.01.0 release -- -- 4.02.0 Official 4.02.0 release -- -- 4.02.1 Official 4.02.1 release 
+5
source share
1 answer

You should switch from the system compiler to OPAM. Then the compiler sources will be loaded and compiled automatically, as well as all the prerequisites. To switch, use the following command:

 opam switch 4.02.1 

Instead of 4.02.1 you can use any available compiler, of course.

The actual error is that for some reason (I think because of the model with some periods) you have different versions of camlp4 and the OCaml compiler, so that they cannot talk to each other.

+5
source

Source: https://habr.com/ru/post/1211575/


All Articles