天天看點

編譯opam報錯

0x01:打算在VPS上安裝個Google的網盤,環境需要安裝OPAM,在檢查環境時就提示缺少not found的一些包。

<code>#./configure</code>

<code>checking </code><code>for</code> <code>OCaml findlib package unix... found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package extlib... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package re... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package re.str... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package re.pcre... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package re.glob... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package cmdliner... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package ocamlgraph... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package cudf... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package dose3.common... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package dose3.algo... not found</code>

<code>checking </code><code>for</code> <code>OCaml findlib package jsonm... not found</code>

0x02:心想也許直接make能過去,結果是下面一樣報錯了。

<code>#make</code>

<code>make</code> <code>-C src opam-lib</code>

<code>make</code><code>[1]: Entering directory </code><code>'/home/roott/opam/src'</code>

<code>make</code><code>[1]: *** No rule to </code><code>make</code> <code>target </code><code>'opam-lib'</code><code>.  Stop.</code>

<code>make</code><code>[1]: Leaving directory </code><code>'/home/roott/opam/src'</code>

<code>Makefile:26: recipe </code><code>for</code> <code>target </code><code>'opam-lib'</code> <code>failed</code>

<code>make</code><code>: *** [opam-lib] Error 2</code>

0x03:按照檢查提示,用‘make lib-ext’可以自動下載下傳。

<code>============================================================================</code>

<code>Some dependencies are missing. If you are just interested </code><code>in</code> <code>the stand-alone</code>

<code>'opam'</code> <code>binary, run </code><code>'make lib-ext'</code> <code>to download and include them.</code>

0x04:經過make lib-ext後下載下傳原來連結失效了,造成cppo-1.1.2.tar.gz解壓失敗。

<code># make lib-ext</code>

<code>make</code> <code>-C src_ext lib-ext</code>

<code>make</code><code>[1]: Entering directory </code><code>'/home/roott/opam/src_ext'</code>

<code>[ -e  cppo-1.1.2.</code><code>tar</code><code>.gz ] || curl  -OL http:</code><code>//mjambon</code><code>.com</code><code>/releases/cppo/cppo-1</code><code>.1.2.</code><code>tar</code><code>.gz</code>

<code>  </code><code>% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current</code>

<code>                                 </code><code>Dload  Upload   Total   Spent    Left  Speed</code>

<code>100  9340  100  9340    0     0  97476      0 --:--:-- --:--:-- --:--:-- 97291</code>

<code>ocaml ..</code><code>/shell/md5check</code><code>.ml cppo-1.1.2.</code><code>tar</code><code>.gz f1a551639c0c667ee8840d95ea5b2ab7</code>

<code>MD5 </code><code>for</code> <code>cppo-1.1.2.</code><code>tar</code><code>.gz differ:</code>

<code>  </code><code>expected: f1a551639c0c667ee8840d95ea5b2ab7</code>

<code>    </code><code>actual: baeb004575d58a7b186737a3be6d5f07</code>

<code>mkdir</code> <code>-p tmp</code>

<code>cd</code> <code>tmp &amp;&amp; </code><code>tar</code> <code>xfz ..</code><code>/cppo-1</code><code>.1.2.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>(child): ..</code><code>/cppo-1</code><code>.1.2.</code><code>tar</code><code>.gz: Cannot </code><code>open</code><code>: No such </code><code>file</code> <code>or directory</code>

<code>tar</code> <code>(child): Error is not recoverable: exiting now</code>

<code>tar</code><code>: Child returned status 2</code>

<code>tar</code><code>: Error is not recoverable: exiting now</code>

<code>Makefile:58: recipe </code><code>for</code> <code>target </code><code>'cppo.stamp'</code> <code>failed</code>

<code>make</code><code>[1]: *** [cppo.stamp] Error 2</code>

<code>make</code><code>[1]: Leaving directory </code><code>'/home/roott/opam/src_ext'</code>

<code>Makefile:29: recipe </code><code>for</code> <code>target </code><code>'lib-ext'</code> <code>failed</code>

<code>make</code><code>: *** [lib-ext] Error 2</code>

0x05:到/home/root/opam/src_ext目錄下看到檔案隻有45位元組肯定不對。

<code>-rwxrwxr-x 1 root root    45 Jun 20 15:15 cppo-1.1.2.</code><code>tar</code><code>.gz</code>

0x06:原連結失效隻能手動下載下傳cppo-1.1.2.tar.gz,google找到一個github上的一個連結

<code># wget https://github.com/mjambon/cppo/archive/v1.1.2.tar.gz</code>

0x07:解壓cppo将裡面檔案覆寫到opam檔案夾裡。我的opam放在home下

<code>#tar -zxf v1.1.2.tar.gz</code>

<code>#mv -f cppo-1.1.2/ ~/opam/</code>

0x08:覆寫完再次‘make’,成功。

<code>make</code>

<code>[15:35:12]</code><code>echo</code> <code>'let cppo_version = "1.1.2"'</code> <code>&gt; cppo_version.ml</code>

<code>[15:35:12]ocamlyacc cppo_parser.mly</code>

<code>[15:35:12]ocamllex cppo_lexer.mll</code>

<code>[15:35:12]368 states, 13139 transitions, table size 54764 bytes</code>

<code>[15:35:12]3729 additional bytes used </code><code>for</code> <code>bindings</code>

<code>[15:35:12]ocamlopt -o cppo -dtypes unix.cmxa str.cmxa cppo_version.ml cppo_types.ml cppo_parser.mli cppo_parser.ml cppo_lexer.ml cppo_command.ml cppo_eval.ml cppo_main.ml</code>

<code>[15:35:14]</code><code>cd</code> <code>ocamlbuild_plugin &amp;&amp; ocamlbuild -use-ocamlfind ocamlbuild_cppo.cma ocamlbuild_cppo.cmxa ocamlbuild_cppo.a ocamlbuild_cppo.cmxs</code>

<code>[15:35:15]Finished, 8 targets (0 cached) </code><code>in</code> <code>00:00:00.</code>

<code>[15:35:31]roott@LosAngeles:~</code><code>/opam</code><code>$ </code><code>sudo</code> <code>make</code> <code>install</code>

<code>[15:35:37][</code><code>sudo</code><code>] password </code><code>for</code> <code>roott: </code>

<code>[15:35:38]</code><code>install</code> <code>-m 0755 cppo </code><code>/usr/local/bin</code> <code>|| \</code>

<code>[15:35:38]        </code><code>install</code> <code>-m 0755 cppo.exe </code><code>/usr/local/bin</code>

<code>[15:35:38]ocamlfind </code><code>install</code> <code>-patch-version 1.1.2 </code><code>"cppo_ocamlbuild"</code> <code>\</code>

<code>[15:35:38]        META ocamlbuild_plugin</code><code>/_build/ocamlbuild_cppo</code><code>.cmi ocamlbuild_plugin</code><code>/_build/ocamlbuild_cppo</code><code>.cma ocamlbuild_plugin</code><code>/_build/ocamlbuild_cppo</code><code>.cmxa ocamlbuild_plugin</code><code>/_build/ocamlbuild_cppo</code><code>.a ocamlbuild_plugin</code><code>/_build/ocamlbuild_cppo</code><code>.cmxs</code>

<code>[15:35:38]Installed </code><code>/usr/local/lib/ocaml/4</code><code>.02.3</code><code>/cppo_ocamlbuild/ocamlbuild_cppo</code><code>.cmxs</code>

<code>[15:35:38]Installed </code><code>/usr/local/lib/ocaml/4</code><code>.02.3</code><code>/cppo_ocamlbuild/ocamlbuild_cppo</code><code>.a</code>

<code>[15:35:38]Installed </code><code>/usr/local/lib/ocaml/4</code><code>.02.3</code><code>/cppo_ocamlbuild/ocamlbuild_cppo</code><code>.cmxa</code>

<code>[15:35:38]Installed </code><code>/usr/local/lib/ocaml/4</code><code>.02.3</code><code>/cppo_ocamlbuild/ocamlbuild_cppo</code><code>.cma</code>

<code>[15:35:38]Installed </code><code>/usr/local/lib/ocaml/4</code><code>.02.3</code><code>/cppo_ocamlbuild/ocamlbuild_cppo</code><code>.cmi</code>

<code>[15:35:38]Installed </code><code>/usr/local/lib/ocaml/4</code><code>.02.3</code><code>/cppo_ocamlbuild/META</code>

0x09:在下面就是安裝。

<code>#sudo make install</code>

本文轉自 piazini 51CTO部落格,原文連結:http://blog.51cto.com/wutou/1940250