题
我想编译我的程序与剖析,所以我跑:
$ 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
运行实际重新安装任何东西之前检查是否存在问题。如果将重新引导软件包像process
或directory
,这是一个不好的迹象,如果你不知道如何处理它,请在#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