我是Haskell的新手,试图为编译器构造类编写一个程序。
我在我的ubuntu 13.10上安装了haskell-platform软件包,然后(安装haskell平台后没有乱搞任何东西)试图运行以下命令:
$ sudo cabal install bnfc
结果与:
Resolving dependencies...
Configuring BNFC-2.6.0.3...
cabal: The following installed packages are broken because other packages they
depend on are missing. These broken packages must be rebuilt before they can
be used.
package process-1.1.0.2 is broken due to missing package
directory-1.2.0.1-508733a890139bbedb8aa76468431462
Failed to install BNFC-2.6.0.3
cabal: Error: some packages failed to install:
BNFC-2.6.0.3 failed during the configure step. The exception was:
ExitFailure 1
当我尝试安装包目录时,它说已经安装了包。 有人可以帮忙吗?
答案 0 :(得分:1)
我也在使用带有haskell平台软件包的Ubuntu 13.10,并为我安装了bnfc。
你可以检查一些事情......
不要在安装cabal时使用sudo(默认情况下,cabal会在您自己的主目录中安装软件包,使用sudo可能会因为提供错误的文件所有权而导致出现问题,或者可能尝试将文件放入/ root,或者甚至覆盖/ usr东西)
重命名〜/ .cabal /和〜/ .ghc /,并通过运行“cabal update”重建它们(您可能需要在移动后的位置重新添加〜/ .cabal / bin / cabal)移动)。这些包含已安装的软件包及其信息....由于您有一个新的vanilla安装,这些应该基本上是空的,尽管它们中的元信息可能已损坏。 (如果由于某种原因这会使事情变得更糟,你可以随时恢复原始目录....如果它解决了问题,你可以删除原来的.cabal和.ghc)
您可以通过执行以下操作获取有关未安装软件包原因的更多信息
cabal unpack bnfc#这将下载并解压缩源代码 cd BNFC-2.6.0.3 #enter into新创建的源目录 cabal configure #This检查是否满足所有系统依赖性 cabal build #This构建包 cabal install #This将软件包安装在〜/ .cabal /
(如果不满足依赖关系,您可能必须迭代到另一个包)
我认为2.可以解决您的问题,因为您显示的错误消息暗示构建过程被挂钩在查找目录包的非常特定版本,而不是最新版本。这件事发生在我身上,清理掉了.cabal为我解决了这个问题。