问题标签 [ghc-pkg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1492 浏览

macos - 找不到 cabal 安装的软件包

我很茫然。我使用 OS X 10.8.2。

我能找到的唯一参考是:

  • 4.1 刚装了包,现在找不到包了`

  • 当您在全局安装包时会发生这种情况,而以前的
    包是在本地安装的。请注意,cabal-install
    默认安装在本地,“runhaskell Setup”命令
    默认安装在全局。

cabal 默认设置为本地安装。我没有改变这一点。Haskell 已在全球范围内安装。

x是奇怪的...

我检查ghc-pkg list但它不存在。所以看看它是否与user包裹一起。

我在这里错过了一面旗帜吗?我还需要建造它吗?

0 投票
2 回答
520 浏览

haskell - 有没有办法找到为什么 cabal 安装了某个包?

使用 cabal-install 安装包时,它也会间接安装所有依赖项。鉴于.cabal/packages我没有直接安装的文件夹中的某个包,有没有办法找到它依赖的其他包?

0 投票
2 回答
1179 浏览

macos - Haskell 环境软管重新安装后

我最近重新安装了我的 Haskell 环境,因为我认为在将我的 Mac OS X 更新到 Mavericks 之后我已经无法恢复了。

现在每次运行时cabal install cabal-install,都会出现以下错误。

谷歌搜索后,我发现了这个:http ://www.haskell.org/platform/ghc-clang-wrapper

我跑来为 Haskell 包装铿锵声,但仍然出现上述错误。

跑步ghc-pkg check

为什么我的 Haskell 环境如此糟糕?我该如何解决?

0 投票
4 回答
7703 浏览

haskell - 当通过 cabal repl 调用时,是否有一种简单的方法可以将额外的包加载到 ghci?

cabal repl对于调试库非常有用,但是 ghci 将隐藏所有不依赖于 cabal 包的包。虽然这对于 来说肯定是件好事cabal build,因为repl这意味着我无法从不相关的包中加载某些内容以进行快速测试。

可以通过发出来访问任何包:set -package,但这会从我正在处理的 pacakge 中卸载所有模块,从而破坏cabal repl.

有什么好方法可以简单地加载我已安装但不希望依赖于我的库的包?

0 投票
1 回答
692 浏览

haskell - 使用本地构建的 ghc 在 debian wheezy 上构建 haskell 平台 2014.2.0.0

我想在 Debian wheezy 上安装最新版本的 Haskell 平台。通过执行

我得到ghc版本 7.4.1(2012 年发布),而当前版本是 7.8.3。

所以我已经下载了当前ghc版本的源代码并构建了它:一切正常,我现在可以执行ghc. 然后我从这里下载了 Haskell 平台的源代码分发,在README文件中我找到了说明

建筑要求

您需要来自源 repo源 tarball的平台构建文件。两者的构建说明都是相同的。

您需要一个与您正在编译的操作系统相匹配的 GHC 绑定器。它还必须与平台使用的 GHC 版本相匹配,目前为 7.8.3。您可以从以下网址获得: http ://www.haskell.org/ghc/download_ghc_7_8_3

我实际上不想使用它,我想使用ghc我刚刚构建的,因为在我阅读的 ghc 文档中:

注意:如果您的 libc 版本太旧,那么您会从这些绑定程序中的二进制文件中收到类似“浮点异常”的错误。您将需要升级您的 libc(我们不确定所需的最低版本是什么),或者使用为您的发行版构建的二进制包。

所以,为了确定,我更愿意使用我的构建。但是,README附带的haskell-platform-2014.2.0.0并没有说明这种选择。它提供的唯一选项是运行:

./platform.sh $PATH_TO_GHC_BINDIST_TARBALL

ghc那么:有没有办法使用我在本地构建的二进制文件来构建 Haskell 平台?

0 投票
1 回答
1844 浏览

haskell - 有人解释 Haskell 包管理系统

我只是不明白。这太令人困惑了。

我知道有ghc-pkg,Cabalcabal-install。这些都是不同的东西。

有人告诉我,安装 haskell-platform 是个坏主意,最好分别安装 ghc 和 cabal-install。我不知道为什么这是一个坏主意。

我发现有一种方法可以使用cabal sandbox init. 但我不知道如何在全球范围内管理包裹。

通过 brew 安装 ghc 和 cabal-install 之后,我的下一步应该是什么?如果我这样做cabal update,它将创建 ~/.cabal 目录,并可能告诉我通过运行来升级 cabal-install
cabal install cabal-install。然后我将不得不删除使用 brew 安装的那个,并添加.cabal/bin到 $PATH,因此cabal将指向更新的那个。那么这是否意味着现在如果我cabal install ghc-mod坐在主目录中运行它会在 ~/.cabal 文件夹中安装库?我的ghc-pkg list指向/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/package.conf.d,我不喜欢那样。 ghc-pkg list --user指向~/.ghc/x86_64-darwin-7.8.3/package.conf.d,我也不喜欢那样,但也许没关系。无论如何,初始化 ghc-pkg 的正确方法是什么?我应该跑步ghc-pkg init --global | --user还是什么?

你们能告诉我管理全局依赖项的正确方法是什么吗?

  • 可以package.conf.d吗,实际的包位于不同的文件夹中吗?~/.ghc文件夹和文件夹的作用是什么~/.cabal

  • 如何正确卸载软件包?ghc-pkg unregister不删除包,对吗?

    因此,假设您安装了一个与其他软件包的最新版本中断的软件包。说单子控制。假设您这样做cabal install foo --constraint 'monad-control < 1.0.0.0'了,这使它起作用。稍后,您通过运行并从 .cabal/lib 和 package.conf.d 文件夹中物理删除相关文件来删除“foo” ghc-pkg unregister foo(您真的必须手动执行此操作吗?)。然而,你现在仍然有旧版本的 monad-control。有没有办法找到和修剪未使用的包?

  • 你如何检查过时的包裹?

  • 有没有办法将依赖关系视为一棵树?ghc-pkg list给你只是扁平化的包列表。

  • 为什么ghc-pkg check会抛出这样的警告:

    我知道您可以放心地忽略这些警告,但它们到底是什么意思?

  • 最后,你们不觉得 Haskell 的包装系统有点糟糕吗?我知道没有人应该在没有真正学习的情况下批评某件事,我很抱歉这么说。我是 Haskell 的新手,但我觉得 Haskell 的默认包管理充满了缺点。我想知道是否有更好的选择,我不知道?Haskell 已经存在了很长一段时间,我听说过关于包管理的讨论不应该依赖于具体的包,而应该基于抽象,比如接口。想知道,如果我们很快就会有这种包装系统?或者这只是理论上的学术修辞,直到 2020 年某个时候才会出现?

0 投票
1 回答
181 浏览

haskell - 堆栈项目中缺少 ghc-mod 包

我最近在我的设置中破坏了一些东西(可能是堆栈升级),发现我无法让它再次工作:

我正在使用最近的stack-support分支。为什么我有这个哈希差异?

0 投票
1 回答
892 浏览

haskell - ghc 如何解析库的路径?

我开始将 haskell 与 nixpkgs 一起使用。从官方指南到 nixpkgs我读到:

GHC 期望在它自己的 lib 目录中找到所有已安装的库。

如前所述,似乎是说ghc要求将所有库安装在同一路径中。

我认为 ghc 能够通过查看通过 ghc-pkg 配置的软件包数据库来找出库的路径。如果是这种情况,应该可以将库放在文件系统中的不同目录下,并配置 package-db 以解析这些不同的路径。但这与上述链接中所说的相矛盾,所以我没有得到什么?

提前感谢您的任何回答。

0 投票
1 回答
89 浏览

haskell - 在测试和基准套件中访问 GHC 包数据库

我有一个测试套件和一个基准套件,它们使用 GHC API 将模块编译为 Core,这样我就不必“手动”编写 Core 。

我现在主要使用stack的是,我可以访问GHC_PACKAGE_PATH测试套件中的环境变量 ( stack test) 来查找可以提供给 GHC API 的包数据库。请注意,我并不关心任何特定的数据库,我只想拥有来自例如base可用的模块,使用兼容版本的 GHC(例如GHC.Paths.ghc)编译。

到目前为止一切正常,测试是绿色的。现在,如果我对基准套件 ( stack bench) 执行相同操作,GHC_PACKAGE_PATH似乎根本不存在。

长话短说,捕获程序构建时使用的 GHC 包数据库路径的可靠方法是什么?我想一些乱七八糟的事情Setup.hs可能会让我到达我想去的地方。


编辑:这里有一些东西可以玩:https ://github.com/sgraf812/ghc-package-path

stack test打印出 的值GHC_PACKAGE_PATH,而stack bench没有。这个问题的答案应该使得在任何一种情况下都可以打印出一些适当的包数据库的路径。

0 投票
2 回答
1303 浏览

haskell - 使用 ghc-pkg list 和 cabal list --installed 给出不同的列表

我正在尝试加载我的 .hs 文件,但是当我加载时import Data.Numbers.CReal,它给了我错误Failed to load interface for 'Data.Numbers.CReal'。我已经跑了cabal install numbers,如果我cabal list --installed出现了 pkg 号码,但如果我ghc-pkg list没有出现(如果我ghc-pkg check它给出了很多黑线鳕警告)。它与我的非加载文件有关吗?我该如何解决这个问题?

附言。我知道如何导入包,但我不确定我是否正确导入了这个包。

谢谢,对不起,如果我没有正确解释自己。