【问题标题】:Portable package installation on Haskell Platform with Cabal on windows在 Windows 上使用 Cabal 在 Haskell 平台上安装便携式软件包
【发布时间】:2013-09-25 14:02:13
【问题描述】:

我安装了 Windows XP 和 Haskell Platform 2013。当我想在一台没有安装 Haskell 平台的计算机上编译我的代码,并且我不允许安装任何东西时,我可以将我的 Haskell 平台复制到 USB 闪存卡上,并在这台计算机上运行,​​它的工作只是很好。

但有时我需要额外的包,这些包不是标准 Haskell 平台构建的一部分。

我可以使用 Cabal 将其简单地安装在我的个人计算机上,但我不知道如何安装它们以便它们可以便携工作,即。 e.从我在不是我的计算机上的 USB 闪存卡。

我试过了:

cabal install gnuplot --prefix "C:\Program Files\Haskell Platform\2013.2.0.0"

这个安装包到 Haskell 平台目录,但是当我在另一台计算机上运行 Haskell 平台时,它看不到它。

我想,我应该将配置文件安装在 Haskell Platform 目录中,但我不知道该怎么做。

请帮我解决这个问题。提前谢谢!



非常感谢 Mikhail Glushenkov! 现在一切正常。

为了方便像我这样的新手,寻找答案,我只描述指令,做什么,得到相同的结果:

0) 在做任何事情之前阅读说明/

1) 卸载所有需要安装可移植(带有依赖项)的附加包:取消注册此包

ghc-pkg unregister gnuplot

,然后从它存储的位置删除包文件。同时从“package.conf.d”文件夹中删除所有相关文件。要搜索它们,请使用

ghc-pkg list

.

2) 运行(也许没必要)

ghc-pkg recache

.

3) 在 haskell 平台的所需目录中安装包。我在“C:\Program 文件\Haskell 平台\2013.2.0.0\addlib":

cabal install gnuplot --prefix "C:\Program Files\Haskell Platform\2013.2.0.0\addlib" --global

.

4) 更改“package.conf.d”中与已安装软件包相关的每个新文件:替换“C:\Program Files\Haskell Platform\2013.2.0.0\addlib\utility-ht-0.0.9\ghc- 7.6.3" 在其中:"$topdir\..\addlib\utility-ht-0.0.9\ghc-7.6.3", i. e. "C:\Program Files\Haskell Platform\2013.2.0.0\addlib\" -> "$topdir\..\addlib\"。

5) 运行

ghc-pkg recache

.

3a) 也许,这会更好,然后是 3(我没有测试过)。如果是这样,请不要执行 3、4 和 5。

cabal install gnuplot --prefix "$topdir\..\addlib" --global

.

结束。

*UPD*

我在此说明中发现了一些愚蠢的错误(在 3a 和 4 中)。现已修复。

3a 不工作!

【问题讨论】:

  • 我从来没有在 Windows 上安装过 Haskell,所以也许这只是我不明白的东西,但我没有得到前缀位。您提供的前缀不在您的 USB 驱动器上,为什么您希望在另一台计算机上看到它?
  • @AndrewMyers,我将库安装在 Haskell 平台文件夹中,并将 Haskell 平台文件夹移动到我的 USB 闪存卡中,因此,实际上,该库位于另一台计算机上。问题是让 Haskell 平台在另一台计算机上看到它。我不知道该怎么做,这就是我问这个问题的原因。

标签: windows haskell cabal haskell-platform cabal-install


【解决方案1】:

您需要将$GHCDIR\lib\package.conf.d\*.conf 文件中的绝对路径替换为引用$topdir 的相对路径,然后运行ghc-pkg recache

看看Haskell Platform's Windows installer does it是怎么回事。

【讨论】:

  • 谢谢你,@MikhailGlushenkov,但看起来我没有任何与 gnuplot 库相关的文件(特别是我安装的)。我怎样才能制作这个文件?
  • 好吧,我还不能编辑之前的评论,所以我只写:我的意思是,你提到的目录中没有这样的文件。
  • @AnonImous 运行ghc-pkg list。它将显示package.conf.d 目录的位置。此外,您需要运行 cabal install--global 以便它安装到全局包 DB。
  • 很抱歉打断你,但是如何一次性安装便携呢?
  • 看起来SO没有在这里打电话给你。所以我现在就这样做。 @米哈伊尔
猜你喜欢
  • 2014-09-11
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多