0

我是 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

当我尝试安装包目录时,它说包已经安装。任何人都可以帮忙吗?

4

1 回答 1

1

我还在使用带有 haskell 平台包的 Ubuntu 13.10,并为我安装了 bnfc。

有几件事你可以检查......

  1. 不要将 sudo 与 cabal install 一起使用(默认情况下,cabal 将软件包安装在您自己的主目录中,使用 sudo 可能会由于提供错误的文件所有权,或者尝试将文件放在 /root 中,甚至覆盖 /usr 的东西而引起麻烦)

  2. 重命名 ~/.cabal/ 和 ~/.ghc/,并通过运行“cabal update”重建它们(您可能需要在移动后从移动位置重新添加 ~/.cabal/bin/cabal)。这些包含已安装的软件包及其信息......因为您有一个新的香草安装,这些应该基本上是空的,尽管它们中的元信息可能已损坏。(如果由于某种原因这使事情变得更糟,您可以随时恢复原始目录....如果解决了问题,您可以删除原始 .cabal 和 .ghc)

  3. 您可以通过执行以下操作获取有关未安装软件包的原因的更多信息

    cabal unpack bnfc #这将下载并解压源代码 cd BNFC-2.6.0.3 #进入新创建的源目录 cabal configure #这会检查所有系统依赖项是否满足 cabal build #这会构建软件包 cabal install #这会安装软件包在 ~/.cabal/

(如果不满足依赖项,您可能必须迭代到另一个包)

我认为 2. 可能会解决您的问题,因为您显示的错误消息暗示构建过程与查找目录包的非常特定版本有关,而不是最新版本。这发生在我身上一次,清理 .cabal 为我解决了这个问题。

于 2013-11-15T18:30:27.547 回答