プロファイリングライブラリを必要とするとき陰謀団は、依存関係をインストールしていませんか?

StackOverflow https://stackoverflow.com/questions/1704421

  •  19-09-2019
  •  | 
  •  

質問

私は、プロファイリングと私のプログラムをコンパイルしたいので、私は実行します:

$ 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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top