Ocaml OPAM открива ли предварително инсталирани Ocaml пакети?

Наскоро инсталирах OPAM според инструкциите, за да го пробвам и изглежда добре и бих искал да го използвам. Той обаче не успява да открие предварително инсталирани OCAML пакети, които инсталирах ръчно, преди да избера да опитам OPAM.

Първото нещо, което OPAM иска да направи за всяка инсталация на пакет сега, е да инсталира ocamlfind. Запитването за информация за пакетите, които инсталирах ръчно, не отразява, че те вече са инсталирани. Това включва ocamlfind.

Страхувам се да направя каквото и да било, тъй като нямам представа какъв ефект може да има инсталирането на друг пакет. OPAM ще презапише или преинсталира най-малкото ocamlfind. Щеше ли това да унищожи съществуващия ми ocamlfind и познанията му за всички пакети, които вече съм инсталирал ръчно, и способността ми да ги използвам? Не искам да преинсталирам всичко отначало. Търсих и търсих, но не можах да намеря никаква документация или публикации във форума по тази точна тема и не знам как точно работи ocamlfind под капака.

Най-малкото би било хубаво, ако OPAM може или да открие, или да му бъде казано кои пакети вече съществуват и къде се намират, за да се избегне ненужно повторно компилиране. Може би вече прави това, но не успях да открия дали го прави.


person paul    schedule 27.05.2013    source източник


Отговори (1)


OPAM предоставя една (или повече) инсталации на OCaml, независими от тази по подразбиране, т.е. компилатора или библиотеките, които обикновено се намират в /usr/bin, /usr/lib/ocaml или /usr/local/blahblah. Следователно вашата OCaml система, инсталирана ръчно, и такава, базирана на OPAM, могат да съществуват едновременно. Цялата инсталация на OPAM се извършва под $HOME/.opam/switch/ (switch=system по подразбиране), включително двоичния изпълним файл. Така че за вашия случай OCamlFind не е презаписан от OPAM. OPAM е инсталирал друг OCamlFind в друга директория.

Коя система се използва може да се "превключи" от променливите на околната среда. "opam config env" показва променливите, които трябва да декларирате, за да използвате текущия "превключвател". Ако искате да използвате инсталацията по подразбиране, уверете се, че тези променливи не препращат към OPAM неща.

За да живеете с вашите ръчно компилирани библиотеки и OPAM пакети, прекомпилирайте ги и ги инсталирайте отново в превключваната среда OPAM. Имайте предвид, че OPAM може да презапише вашите пакети тук. Например, ако инсталирате ocamlfind ръчно в "системна" OPAM директория, тогава ако въведете "opam install ocamlfind", тогава OPAM презаписва вашата инсталация на OCamlFind. (О, BTW, мисля, че е трудно за OPAM да ни предупреди, когато презаписва съществуваща инсталация тук, тъй като пакет OPAM няма информация за това кои пакети OCamlFind инсталира).

Използването на библиотеките, инсталирани на мястото по подразбиране, и OPAM пакетите едновременно е... AFAIK, не е лесно. Мисля, че поне OPAM не е предназначен за такава употреба. За да избегнете объркване на пътищата на библиотеките, пренесете ги към един от превключвателите OPAM.

Ако получите някои желания за функции на OPAM в бъдеще, публикувайте ги на https://github.com/OCamlPro/opam.

person camlspotter    schedule 27.05.2013