2017-04-19 67 views
3

试图邮资-C与推荐OPAM方法安装提供了以下错误:错误安装邮资-C与OPAM

### stdout ### 
# Cleaning  Installation directory 
# Installing WP shared files 
### stderr ### 
# /bin/sh: 1: src/plugins/wp/share/instwp: not found 
# make: *** [src/plugins/wp/Makefile:355: install] Error 127 

这里使用的命令:

# install opam 
$ wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin 
# configure opam 
$ eval `opam config env` 
$ opam config setup -a 
# install frama-c 
$ opam install frama-c-base 

编辑:这里是输出opam install -v frama-c-basehttps://pastebin.com/eMH08ugA

编辑2:有问题的系统运行Linux Mint 17.3(Ubuntu 14.04 LTS上游);软件存储库中的Ubuntu软件包是Make 3.81(未经测试),虽然在遇到此bug时它已经升级到Make 4.2

+0

需要更多信息。你能否提供'opam install -v frama-c-base'的输出,以便我们输出在编译期间启动的命令?请注意,由此产生的输出会很大,因此您可能希望将其重定向到一个文件,例如用'opam install -v frama-c-base | tee opam.log'并提供到'opam.log'的链接。 – Virgile

+0

opam.log:https:// pastebin。com/eMH08ugA – Spearman

+1

这不是解决安装问题的直接解决方案,但是您能切换到OCaml 4.02.3吗?该编译器提供了一个新版本的Frama-C(20161101),该编译器应该有望避免该问题的发生。它还具有对先前版本进行常规改进和错误修复的额外好处。 – anol

回答

4

我能够重现该问题,并且罪魁祸首似乎是Make 4.2 this bug特别是:

bug #44742: Double-dep with double-colon rule not built [in parallel builds]

在邮资-C的makefile一些规则使用双冒号,并且默认的-j%{jobs}%opam邮资-C文件设置为加快编译。

不幸的是,在使用该特定版本的Make时,尽管它的规则存在于WP makefile中,但似乎instwp文件(以及其他)中的这两个结果的组合未被构建。

我在默认情况下使用Make 4.2.1,我没有这个问题(所有文件按预期生成并且make install成功)。如果我手动编译Frama-C没有-j,我也没有问题。

如果您无法更新您的Make版本,可以尝试使用opam install -j 1 frama-c,它应该覆盖jobs变量并禁用Frama-C的并行编译,从而避免出错。

不过,我一般建议是:

  1. 安装一个新的OCaml(4.02.3至少,它应该是兼容几乎所有的OCaml中4.02.1可包),以确保最近的将发布Frama-C(Frama-C Silicon不适用于OCaml 4.02.1);

  2. 如果可以,自己安装frama-c,而不是frama-c-base,因为唯一的区别是所需的软件包,即GUI的软件包。您可能需要在运行opam install frama-c之前做到以下几点:

    opam install depext 
    opam depext frama-c 
    

    第一行会安装depext,这是能够找到外部依赖于你的发行版,而第二线将适用depext以邮资-C,从而促使您可以安装您的发行版中可用的外部依赖项。

+0

感谢这工作。我不知道为什么我最终用OCaml 4.02.1,在安装opam之前,我的系统上没有ocaml编译器。 – Spearman

+0

4.02.1是'opam_installer.sh'安装的默认版本。或许他们现在应该更新它,但这可能会破坏现有的脚本,我想... – anol

+0

顺便说一句,如果您可以添加您正在使用的问题的发行版,这可以帮助指导经常使用表达式的用户'frama -c opam error ubuntu'或类似的东西......并且这也可以帮助我们知道是否有一个主要的分发版本会受到此问题的影响。 – anol