【问题标题】:How to install system.random. Maybe cabal issue in version 8 of stack如何安装system.random。堆栈版本 8 中可能存在阴谋集团问题
【发布时间】:2017-02-13 10:15:56
【问题描述】:

我正在使用堆栈 ghci 版本 8 开发 Ubuntu 16.04。我想在 Haskell 中导入 System.Random,但似乎我遇到了可能涉及 Cabal 的问题。我在这个网站上看到过类似的帖子,但他们通常说这是因为版本较旧,但我使用的是版本 8。

我得到错误:

Failed to load interface for ‘System.Random’
Use -v to see a list of the files searched for.

这告诉我 System.Random 有问题。上网看了一下,发现需要先安装Cabal。

当我输入时

Cabal --version

我明白了

cabal-install version 1.22.6.0
using version 1.22.5.0 of the Cabal library 

这告诉我我已经拥有它了。所以当我尝试更新时

sudo apt-get install cabal-install cabal update

我明白了

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package cabal
E: Unable to locate package update

这很奇怪。如果我忽略它并尝试通过随机安装

cabal install random

我明白了

Resolving dependencies...
All the requested packages are already installed:
random-1.1
Use --reinstall if you want to reinstall anyway.

看来我也有 cabal 的随机包装。但我无法使用

加载程序
import System.Random

命令。

编辑:似乎我有堆栈 ghci 版本 8.0.1 和 ghci 版本 7.10.3。 System.random 在 ghci 中加载,但不在堆栈 ghci 中。

当我尝试在堆栈中加载文件时,我也会得到以下信息。进入

stack ghci R.hs

我明白了

Warning: Couldn't find a component for file target /home/aa/workspace/share/haskell/chenw/hw4/R.hs. Attempting to load anyway.
Configuring GHCi with the following packages: 
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /home/aa/.ghc/ghci.conf
Loaded GHCi configuration from /tmp/ghci19674/ghci-script

这是否意味着我的堆栈安装有问题?

【问题讨论】:

  • sudo apt-get install cabal-install cabal update 失败并不奇怪。命令是cabal update;它与 apt-get 无关。
  • @Ryan,我刚试过“cabal update && cabal install cabal-install”,但还是不行。
  • 您没有给出用于获取第一条错误消息的命令。但是stack ghci --package random 修复了吗?
  • @MichaelSnoyman。是的,它做到了,谢谢!作为后续,堆栈是否正常运行?当我键入“stack ghci File.hs”时,它应该能够加载程序 File.hs,还是我的堆栈通过不加载而只进入前奏以正确的方式运行?

标签: haskell cabal haskell-stack


【解决方案1】:

如果你想使用stack,并假设你有一个工作的stack,你不必通过apt-get安装任何东西。

首先,更新您的stack

stack update

确保您的包裹拥有正确的 resolver version number

  • 如果您想全局使用堆栈,即stack ghci <source.hs>。检查~/.stack/global-project/stack.yaml
  • 如果您使用stack 管理您的项目,即。 stack new <project>stack build。检查项目的stack.yaml

在全局(任何地方)使用stack

  • stack install random随机安装
  • stack ghci:load <source.hs> 使用 GHCi
  • 编译源代码stack ghc <source.hs>
  • 通过stack exec <executable_name> 运行您的程序

您可以通过 --resolver= 强制堆栈使用特定的解析器。

示例:使用最新的 lts

$ stack --resolver=lts setup
$ stack --resolver=lts install random
$ stack --resolver=lts ghci

在项目目录下使用stackstack.yaml存在),不需要手动安装包;如果需要,stack 将在 stack build 时为您安装它。但是你必须编辑<project.cabal>

build-depends:       base >= 4.7 && < 5
                     , random

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多