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 && </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>> 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 && 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