プロファイリングライブラリを必要とするとき陰謀団は、依存関係をインストールしていませんか?
質問
私は、プロファイリングと私のプログラムをコンパイルしたいので、私は実行します:
$ cabal configure --enable-executable-profiling
...
$ cabal build
...
Could not find module 'Graphics.UI.GLUT':
Perhaps you havent installed the profiling libraries for package 'GLUT-2.2.2.0'?
...
$ # indeed I have not installed the prof libs for GLUT, so..
$ cabal install -p GLUT --reinstall
...
Could not find module 'Graphics.Rendering.OpenGL':
Perhaps you havent installed the profiling libraries for package 'OpenGL-2.4.0.1'?
...
だから、問題が徒党の通常の歓迎の振る舞いとは異なり、秘密結社が依存関係を解決し、プロファイリングのライブラリを必要とするときにそれらをインストールしていないこと、である。
私は(コンパイルのしばらく後に表示されるエラーを以下により)手動で依存関係を解決することによって、それを回避することができます:
$ cabal install -p OpenGLRaw --reinstall
$ cabal install -p StateVar --reinstall
$ cabal install -p Tensor --reinstall
$ cabal install -p ObjectName --reinstall
$ cabal install -p GLURaw --reinstall
$ cabal install -p OpenGL --reinstall
$ cabal install -p GLUT --reinstall
そして、私の次の依存性を繰り返し..
これを行うには良い方法はありますか?すなわちそれは、通常のライブラリの場合と同様に秘密結社が自分自身で仕事をするのですか?
解決
私は私のlibrary-profiling: True
ファイルで~/.cabal/config
を有効にしています。その時から、任意の新規インストールが自動的にプロファイリングを可能にします。
残念ながら、まだ私は手動で既にインストールされている古いパッケージのために再インストールしなければならなかったことを意味します。が、手動でこれを行うのしばらく後、私はを今すぐのほとんどのパッケージが有効になってプロファイリングを再インストールした...
他のヒント
トム・Lokhorstによってコメントから:
私は、誰かが良い答え、手動で次の時間を完全にHaskellのプラットフォームを再インストールするために私を必要としないものと一緒に来ることを願っています。
将来の訪問者のために:
インストールされているすべてのライブラリのプロファイリングのバージョンをインストールする作業は、雑用のあまりとなっています。、cabal (cabal-install)
は現在、Windowsの何かに、world
されるだろうLinux上.cabal
ディレクトリ(、中$HOME/.cabal
ファイルでそれを使用してインストールされたものを追跡しますOSX上、C:\Users\%YOU%\AppData\Roaming\cabal\
のような??)。
(同じディレクトリ内)config
ファイルでプロファイリングを有効にすると、GHCのパッケージデータベースをクリアした後(あなたはghc-pkg list nonexisting
ごとのグローバルおよびユーザーDBの場所を見つけることができるように、ghc-pkg unregister packagename
とのグローバルなデータベースから徒党-インストールパッケージを削除あなたがいずれかを持っている場合は、名前を変更したり、全体のユーザDBを削除 - world
ファイルのみを以下のように動作するはずのサポートをプロファイリングして、すべてをインストールし、明示的にインストールされたパッケージではなく、その依存関係)を追跡するので、これが必要です。
$ cabal install --reinstall world --dry-run
まず、実際に何かを再インストールする前に、問題をチェックするために--dry-run
で実行されます。それはprocess
またはdirectory
のようなブートパッケージを再インストールしたい場合、それはあなたが、#haskell
のIRCチャンネルに指導のためのメーリングリストの1、またはここを尋ね、それを処理する方法がわからない場合は、悪い兆候です。それが原因通常、解決することができます hackage を相互に互換性のないいくつかのパッケージの上に新しいバージョンに一貫性のあるインストールの計画を見つけることが失敗した場合world
ファイルを編集し、いくつかのパッケージの許容バージョンを制約することもできます。
次に、あなたは何もひどく壊れていないだろうと楽観している場合、
$ cabal install --reinstall world
とGHCがビジーコンパイルされながら、お茶の素敵なポットを持っています。
ダニエル・フィッシャーの答えはよさそうだが、いくつかの理由で私の〜/ .cabal /世界ライブラリのためだけに直接インストールされたライブラリのエントリではなく、それらの依存関係が含まれています。
は、代わりに、私が使用してインストールされているすべてのライブラリのリストをダンプ
$ ghc-pkg list > list
これは、システム全体およびローカルにインストールされたライブラリを示しています。したがって、私はlist
後行のみを残し(システム全体のインストールライブラリを含む)第1の部分を除去する/home/<user>/.ghc/...
ファイルを編集しました。最後に、私が走った。
$ cabal install --reinstall $(cat list)
これは私のために働きました。あなたは多分最初--dry-run
を行う必要があります。その後、お茶のポットを作る行きます。またはケーキを焼くます。
訪問者2016+の場合:ちょうどghc-prof
をインストール
DebianのLinuxシステム:
sudo apt-get install ghc-prof
アーチのLinuxシステム:
sudo pacman -S ghc-prof