首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法安装yesod-bin

无法安装yesod-bin
EN

Stack Overflow用户
提问于 2013-06-06 10:22:34
回答 1查看 864关注 0票数 2

我正在将我的yesod框架更新到最新的yesod 1.2版本。我已经安装了yesod-painfully....had(手动删除旧的dependency....cabal地狱),现在我需要安装yesod-bin,应该可以了。然而,在sudo cabal install yesod-bin之后,我得到了以下错误。

代码语言:javascript
复制
Building yesod-bin-1.2.0...
Preprocessing executable 'yesod-ld-wrapper' for yesod-bin-1.2.0...
[1 of 1] Compiling Main             ( ghcwrapper.hs, dist/build/yesod-ld-wrapper/yesod-ld-wrapper-tmp/Main.o )
Linking dist/build/yesod-ld-wrapper/yesod-ld-wrapper ...
/usr/bin/ld: cannot find -lHStar-0.4.0.1
/usr/bin/ld: cannot find -lHSoptparse-applicative-0.5.2.1
/usr/bin/ld: cannot find -lHSghc-paths-0.1.0.9
/usr/bin/ld: cannot find -lHSfsnotify-0.0.6
/usr/bin/ld: cannot find -lHShinotify-0.3.5
collect2: ld returned 1 exit status
Failed to install yesod-bin-1.2.0
cabal: Error: some packages failed to install:
yesod-bin-1.2.0 failed during the building phase. The exception was:
ExitFailure 1

根据this的说法,我觉得这可能与我不确定的特权有关。

编辑:所以我只找到了以下两个库。

代码语言:javascript
复制
/usr/lib/haskell-packages/ghc/lib/tar-0.3.2.0/ghc-7.4.1/libHStar-0.3.2.0.a
/usr/lib/haskell-packages/ghc/lib/ghc-paths-0.1.0.8/ghc-7.4.1/libHSghc-paths-0.1.0.8.a

我正在尝试将libghc-tar-dev更新到最新版本0.4.0.1。然而,0.3.2.0是apt-get上的最新版本,我的选择是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 17:39:19

首先,我会检查是否有libHStar、libHSoptparse-applicative、libHSghc-paths、libHSfsnotify和libHShinotify库。如果您使用发行版的包管理器安装了haskell平台,我怀疑您会在/usr/local/lib/ghc-*.*.*/中找到这些库。例如,您可以使用以下命令搜索第一个库:

代码语言:javascript
复制
sudo find /usr/local/lib -name 'libHStar*'

如果您没有这些库,那么我认为您可以通过使用发行版的包管理器安装以下程序来获得它们:

  • libghc-tar-dev
  • libghc-optparse-applicative-dev
  • libghc-ghc-paths-dev
  • libghc-fsnotify-dev
  • libghc-hinotify-dev

如果你已经有了这些库,那么你可以修改你的链接中建议的修复:

代码语言:javascript
复制
sudo chmod a+r /usr/local/lib/ghc-*/libHS*

更新:

标准的建议似乎是,您应该始终使用linux发行版的包管理器来安装程序,而不是直接使用cabal命令。如果你想要的包在你的发行版上还没有,那就请求它。这种方法是最安全的,因为已经为您整理好了所有的依赖项。缺点是你通常不会有最新的版本。我看到Ubuntu上有一个yesod包。我不知道它是否包含yesod-bin (我不熟悉yesod),但如果它包含yesod,那是最安全的方法。缺点是,您可能必须清除您的cabal库并从头开始(重新安装haskell-platform,然后是yesod)。

另一种方法是使用包管理器安装haskell-platform,然后使用cabal命令安装任何haskell-y工具。你仍然会使用你的包管理器来安装那些不能用cabal安装的东西(例如,非haskell的东西)。如果你这样做了,你就可以避免很多阴谋论的地狱,因为你永远不会以root身份运行cabal,也永远不会让你的包管理器做任何可以用cabal来做的事情。正如您已经发现的,这种方法的主要缺点是您必须自己处理库依赖项。如果你想继续沿着这条路走下去,你也许可以通过切换到Ubuntu的一些开发/测试版本来获得你需要的一切。或者,您可能必须获取所需的库的正确版本,然后手动安装它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16952741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档