2013-05-27 20 views
6

私は最近OPAMをインストラクションごとにインストールして試してみました。うまく見えて、使いたいです。しかし、OPAMを試してみる前に、手動でインストールした以前にインストールしたOCAMLパッケージを検出できません。Ocaml OPAMは、以前にインストールされたOcamlパッケージを検出しますか?

パッケージインストールでOPAMが最初にやりたいことは、ocamlfindをインストールすることです。手動でインストールしたパッケージに関する情報を照会すると、すでにインストールされていることが反映されません。これにはocamlfindが含まれます。

私は別のパッケージをインストールする必要があるかもしれないと思っていないので、何かをすることを恐れています。 OPAMはocamlfindを少なくとも上書きまたは再インストールします。これは私の既存のocamlfindと、すでに手動でインストールしたすべてのパッケージとそれを使用する能力について知っていますか?私はすべてを何度も再インストールする必要はありません。私は検索して検索しましたが、この正確なトピックに関するドキュメンテーションやフォーラムの投稿を見つけることができず、ocamlfindがそのフードの中でどのように機能するのか正確にはわかりません。

少なくとも、OPAMが不要な再コンパイルを避けるために、どのパッケージがすでに存在し、どこに存在しているかを検出するか、または通知することができればうれしいです。たぶんそれはすでにこれを行うが、私はそれがあるかどうかを発見することができませんでした。

答えて

6

OPAMは、デフォルトのもの、すなわち通常/usr/bin,/usr/lib/ocamlまたは/usr/local/blahblahにあるコンパイラまたはライブラリとは独立した1つ(または複数)のOCamlインストールを提供します。したがって、手作業でインストールされたOCamlシステムとOPAMベースのシステムは共存することができます。すべてのOPAMのインストールはバイナリ実行可能ファイルを含めて$HOME/.opam/switch/(デフォルトではswitch = system)で行われます。したがって、あなたのケースでは、OCamlFindはOPAMによって上書きされませんでした。 OPAMは別のディレクトリに別のOCamlFindをインストールしました。

どのシステムが使用されているかは、環境変数によって「切り替える」ことができます。 "opam config env"には、現在の "スイッチ"を使用するために宣言しなければならない変数が表示されます。デフォルトのインストールを使用する場合は、これらの変数がOPAMのものを参照していないことを確認してください。

手作業でコンパイルしたライブラリとOPAMパッケージを使用するには、OPAM交換環境で再コンパイルして再インストールします。 OPAMがここにあなたのパッケージを上書きするかもしれないことに注意してください。たとえば、 "system" OPAMディレクトリにocamlfindを手動でインストールした場合、"opam install ocamlfind"と入力すると、OPAMはOCamlFindのインストールを上書きします。 OPAMパッケージには、どのOCamlFindパッケージがインストールされているかについての情報がないため、OPAMは既存のインストールを上書きするときにOPAMが警告するのは難しいと思います。

デフォルトの場所とOPAMパッケージに同時にインストールされているライブラリを使用すると、AFAIKは簡単ではありません。少なくともOPAMはそのような使い方になっていないと私は思う。ライブラリパスの混乱を避けるために、OPAMスイッチの1つに移植してください。

今後OPAMの機能をご希望の場合は、https://github.com/OCamlPro/opamに投稿してください。

関連する問題