4

HTFをインストールしようとしています。ただし、これcabal install HTFを取得した後:

Resolving dependencies...
Configuring HTF-0.10.0.7...
Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package regex-base-0.93.2 requires mtl-2.0.1.0
package aeson-0.6.0.2 requires mtl-2.1.2
package HTF-0.10.0.7 requires mtl-2.1.2
package mtl-2.0.1.0 requires transformers-0.2.2.0
package transformers-base-0.4.1 requires transformers-0.3.0.0
package mtl-2.1.2 requires transformers-0.3.0.0
package monad-control-0.3.1.4 requires transformers-0.3.0.0
Building HTF-0.10.0.7...
Preprocessing library HTF-0.10.0.7...
ghc: could not execute: cpphs
cabal: Error: some packages failed to install:
HTF-0.10.0.7 failed during the building phase. The exception was:
ExitFailure 1

他のバージョンをインストールしようとしましたが、別の問題が発生しました。たとえばcabal install 'HTF <= 0.1'、次のようになります。

Resolving dependencies...
Downloading QuickCheck-1.2.0.1...
Configuring QuickCheck-1.2.0.1...
Building QuickCheck-1.2.0.1...
Preprocessing library QuickCheck-1.2.0.1...
[1 of 8] Compiling Test.QuickCheck  ( Test/QuickCheck.hs, dist/build/Test/QuickCheck.o )
[2 of 8] Compiling Test.QuickCheck.Batch ( Test/QuickCheck/Batch.hs, dist/build/Test/QuickCheck/Batch.o )
[3 of 8] Compiling Test.QuickCheck.Utils ( Test/QuickCheck/Utils.hs, dist/build/Test/QuickCheck/Utils.o )
[4 of 8] Compiling Test.QuickCheck.Poly ( Test/QuickCheck/Poly.hs, dist/build/Test/QuickCheck/Poly.o )
[5 of 8] Compiling Debug.QuickCheck.Poly ( Debug/QuickCheck/Poly.hs, dist/build/Debug/QuickCheck/Poly.o )
[6 of 8] Compiling Debug.QuickCheck.Utils ( Debug/QuickCheck/Utils.hs, dist/build/Debug/QuickCheck/Utils.o )
[7 of 8] Compiling Debug.QuickCheck ( Debug/QuickCheck.hs, dist/build/Debug/QuickCheck.o )
[8 of 8] Compiling Debug.QuickCheck.Batch ( Debug/QuickCheck/Batch.hs, dist/build/Debug/QuickCheck/Batch.o )
Registering QuickCheck-1.2.0.1...
Installing library in /home/xxx/.cabal/lib/QuickCheck-1.2.0.1/ghc-7.4.1
Registering QuickCheck-1.2.0.1...
Downloading HTF-0.1...
Configuring HTF-0.1...
Building HTF-0.1...
Preprocessing library HTF-0.1...
[1 of 8] Compiling Test.Framework.Utils ( Test/Framework/Utils.hs, dist/build/Test/Framework/Utils.o )
[2 of 8] Compiling Test.Framework.Process ( Test/Framework/Process.hs, dist/build/Test/Framework/Process.o )

Test/Framework/Process.hs:45:48:
    Ambiguous type variable `a0' in the constraints:
      (Show a0)
        arising from a use of `show' at Test/Framework/Process.hs:45:48-51
      (Control.Exception.Exception a0)
        arising from a use of `Control.Exception.handle'
        at Test/Framework/Process.hs:45:5-28
    Probable fix: add a type signature that fixes these type variable(s)
    In the expression: show e
    In the first argument of `return', namely
      `([], show e, error (show e))'
    In the expression: return ([], show e, error (show e))
cabal: Error: some packages failed to install:
HTF-0.1 failed during the building phase. The exception was:
ExitFailure 1

の後の最初の結果と同様の結果も得られますcabal install 'HTF <= 0.9'。試しghc-pkg checkてみると、壊れたパッケージのリストが表示されました。パッケージを再インストールし、HTF のインストールを繰り返し試みましたが、結果は同じでした。

4

1 に答える 1

5

最初の問題は、あなたがregex-baseに対して構築したmtl-2.0.1.0ことです。

package regex-base-0.93.2 requires mtl-2.0.1.0
package aeson-0.6.0.2 requires mtl-2.1.2

HTFの複数のバージョンに依存しますmtl。それが機能することはめったにありません。

その解決策はになります$ ghc-pkg unregister regex-baseghc-pkgそれが他のパッケージを壊すだろうと警告するなら、あなたはそれらも再構築しなければならないでしょう。手動で行うには多すぎる場合は、ユーザーpackage-db全体を削除して(パッケージがすべてユーザーインストールされていることを願っています。グローバルにインストールされている場合、グローバルdb全体を削除することはできません)、すべてを再構築することを検討してください。とcabal install world

regex-baseが削除された後は、何も依存しmtl-2.0.1.0なくなり、依存関係によって競合が発生することはありません。実際にインストールする前にHTF、次のように確認する必要があります

cabal install HTF --dry-run

それでも競合が発生する場合は、競合を検出する必要があります。さらにパッケージの登録を解除することで、競合の解決に役立てることができます。

次の問題は

ghc: could not execute: cpphs

それはあなたがあなたの中にないように見えcpphsますPATH。インストールしていない場合は、インストールする前にインストールするHTFか、インストール先のディレクトリをに追加する必要がありますPATH

于 2012-12-30T21:00:28.540 に答える