我想编译我的程序与剖析,所以我跑:

$ 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)现在跟踪的内容是在world目录.cabal文件使用它(在Linux上安装,这将是$HOME/.cabal,在Windows上的东西像C:\Users\%YOU%\AppData\Roaming\cabal\,在OSX?)。

所以在config文件启用分析(在同一目录),并清除GHC的软件包数据库后(你可以找到每ghc-pkg list nonexisting的全局和用户数据库的位置;从ghc-pkg unregister packagename全球数据库中删除小集团安装的软件包如果您有任何,重命名或删除整个用户数据库 - 这是必要的,因为world文件只跟踪明确安装的软件包,而不是它们的依赖),以分析支持应该工作如下安装的一切:

$ cabal install --reinstall world --dry-run

先用--dry-run运行实际重新安装任何东西之前检查是否存在问题。如果将重新引导软件包像processdirectory,这是一个不好的迹象,如果你不知道如何处理它,请在#haskell IRC频道,邮件列表中的一个,或在这里进行指导。如果未能找到一致的安装计划,由于新版本在 hackage一些包,其彼此不兼容的,这通常可以解决通过编辑world文件和约束一些包的容许版本。

然后,如果你是乐观的,没有什么会严重打破,

$ cabal install --reinstall world

和具有茶的一个很好的锅而GHC忙编译。

丹尼尔·菲舍尔的答案看起来不错,但出于某种原因,我的〜/ .cabal /世界库只包含直接安装于图书馆的条目,而不是他们的依赖关系。

相反,我倒出使用所有已安装的库的列表

$ ghc-pkg list > list

此列出安装全系统和本地库。因此,我编辑list文件以删除所述第一部分(含安装系统范围内的库)仅留下/home/<user>/.ghc/...之后的行。最后,我跑

$ cabal install --reinstall $(cat list) 

这为我工作。你也许应该先做--dry-run。然后去做出一壶茶。或烤蛋糕。

有关访问者2016+:只要安装ghc-prof

  

Debian的Linux系统:

     

sudo apt-get install ghc-prof

     

Arch Linux的系统:

     

sudo pacman -S ghc-prof

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top