2016-11-30 4 views
4

Comment puis-je installer une version spécifique du compilateur ocaml (et des paquets compatibles) en utilisant opam (ou un autre gestionnaire de paquets)?Comment installer une version spécifique du compilateur ocaml avec l'opam

J'ai jeté un rapide coup d'oeil à la documentation de l'opam, mais je ne trouve pas d'informations pertinentes.

J'ai besoin du compilateur ocaml (de préférence le compilateur de code natif) pour construire unison, un logiciel pour la synchronisation de fichiers. J'ai besoin de construire l'unisson sur deux machines en utilisant la même version d'ocaml, sinon l'unisson émet une erreur et annule son devoir (yiiii!).

J'ai essayé la construction version OCaml 4.04.0 d'une boule de goudron, puis l'utiliser pour la construction de l'unisson, mais sur un de la machine la construction de l'unisson a échoué avec le message d'erreur,

make[1]: Entering directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src' 
ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml 
File "mkProjectInfo.ml", line 1: 
Error: Error while linking /home/norio/Downloads/unison/ocaml_for_unison/lib/ocaml/unix.cma(Unix): 
The external function `unix_has_symlink' is not available 
if [ -f `which etags` ]; then \ 
    etags *.mli */*.mli *.ml */*.ml */*.m *.c */*.c *.txt \ 
      ; fi 
make[1]: Leaving directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src' 

Je ne Je veux partir pour la quête de la fonction unix_has_symlink et me consacrer à l'exploration du marais des dépendances des bibliothèques où de nombreux développeurs étaient tombés avant que la civilisation ne vienne et que les gestionnaires de paquets ne soient inventés.

Y a-t-il quelque chose comme, opam install ocamlc-4.04 et opam install all-packages?


Addendum

Le message d'erreur au sujet unix_has_symlink a été observée sur une machine exécutant Linux Mint 18 bits cannelle 64. Cette fonction fait-elle partie d'une bibliothèque unix/linux plutôt que d'un paquet ocaml?

+0

ne vous dérange pas si je vous demande pour plus de détails sur le système d'exploitation sur la machine que vous obtenez cette erreur? Je pense que 'unix_has_symlink' est une chose Unix assez standard. –

+0

@MikePierce Merci pour votre commentaire. J'ai ajouté l'information dans le message original. – norio

+0

Ceci est une solution terrible, mais il semble que l'otherlib qui appelle 'unix_has_symlink' est nouveau et n'était pas dans les anciennes versions d'OCaml (pas OCaml 4.01.0). Vous pouvez donc installer une ancienne version si cela n'est pas résolu. :/ –

Répondre

8

Pour passer à une version particulière du compilateur ne

opam switch <compiler-version> 

Par exemple,

opam switch 4.03.0 

Pour commencer par une version spécifique, par exemple, lorsque vous installez OPAM, il suffit de faire

opam init --compiler=<version> 

Par exemple,

opam init --compiler=4.03.0 

Pour afficher la liste des versions disponibles ne

opam switch 

Pour voir encore plus, faire

opam switch -a