2017-04-19 30 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