Gérer différents environnements OCaml avec OPAM

Bonjour à tous,

Je ne le répèterai jamais assez, j’adore OCaml. Et j’ai récemment découvert une petite astuce très pratique liée à la gestion des environnements de développement.

Environnement de développe-quoi ?

Lorsque vous travaillez sur des projets un minimum conséquents, vous allez toujours finir par avoir des dépendances, quelque soit le langage. En général, ces dépendances prennent la forme de librairies que vous pouvez installer via un gestionnaire de paquets (gem pour Ruby, pip pour Python, ou opam pour OCaml.

Seulement, il se peut que différents projets utilisent différentes dépendances qui sont incompatibles entre elles. Par exemple, le projet A a besoin d’une bibliothèque version 2 maximum, et le projet B a besoin de la même bibliothèque version 3 minimum. Bref, vous avez saisi l’idée.

Les environnements de développement sont la solution à ce problème. Ils permettent d’isoler les dépendances d’un projet à un autre : vous pouvez jeter un œil à venv sur Python ou à bundler chez Ruby. Qu’en est-il pour OCaml ?

opam switch, gestionnaire de compilateur, mais pas que !

Opam dispose d’une commande intitulée switch qui permet d’avoir plusieurs compilateurs OCaml installés en parallèle et de switcher de l’un à l’autre. En plus, chaque switch dispose de son propre ensemble de librairies. Là où le bât blesse, c’est que par défaut, on ne dispose que d’un switch par version du compilateur, ce qui est embêtant.

Cependant, une option de cette commande, -A (--alias-of dans sa version longue) permet de définir un nouveau switch, nommé selon votre bon désir, qui utilisera la version d’OCaml dont vous aurez besoin ! Un exemple :

$ opam switch project -A 4.04.0

Laissez quelques minutes à Opam, le temps d’installer le nouveau switch, et voilà !

$ opam switch
...
test    C 4.04.0  Official 4.04.0 release
4.04.0  I 4.04.0  Official 4.04.0 release

(Le C signifie current, c’est le switch en cours d’utilisation. Le i quant à lui signifie installed.)

À partir de là, vous avez une installation toute fraîche d’OCaml, sur laquelle vous pouvez installer de nouveaux paquets sans vous soucier des dépendances avec vos autres projets !

Elle est pas belle, la vie ? 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *