Я использую версию Haskell 7.8.4 на (X) Ubuntu 15.10, с Cabal-Install 1.18, установленную через apt
. Я не пытался установить что-либо связанное с Haskell вручную на этой машине. Я установил cabal sandbox, взял и установил модуль только для того, чтобы обнаружить, что ghc
, похоже, не подбирает его. ghc -v
, похоже, предполагает, что у меня есть две версии библиотеки cabal, которые взаимно затеняют друг друга. Как это работает?GHC не может найти модуль в песочнице cabal
Я начинаю с пустым каталогом /tmp/haskell-example
тогда я делаю cabal sandbox init
.
$ cabal sandbox init
Writing a default package environment file to
/tmp/haskell-example/cabal.sandbox.config
Creating a new sandbox at /tmp/haskell-example/.cabal-sandbox
затем установить natural-numbers
, потому что я хочу использовать Data.Natural
модуль в программе. Эта операция завершается успешно.
$ cabal install natural-numbers
Resolving dependencies...
Notice: installing into a sandbox located at
/tmp/haskell-example/.cabal-sandbox
Configuring natural-numbers-0.1.2.0...
Building natural-numbers-0.1.2.0...
Installed natural-numbers-0.1.2.0
я могу проверить, что Data.Natural
модуль действительно был установлен в Кабал песочнице.
$ ls /tmp/haskell-example/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.4/natural-numbers-0.1.2.0
Data
libHSnatural-numbers-0.1.2.0.a
libHSnatural-numbers-0.1.2.0-ghc7.8.4.so
$ ls /tmp/haskell-example/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.4/natural-numbers-0.1.2.0/Data
Natural.dyn_hi
Natural.hi
затем создать простой Main.hs
файл, который импортирует Data.Natural
, но не использует его.
module Main where
import Data.Natural
main = putStrLn "Hello World"
Когда я пытаюсь ghc Main.hs
я вижу следующее:
$ ghc Main.hs
Main.hs:3:8:
Could not find module ‘Data.Natural’
Use -v to see a list of the files searched for.
С многословным флаг включен, то кажется, что моя кабала становится омрачены позже междусобойчик, который в свою очередь затенения более ранняя кабала. Почему это происходит?
$ ghc -v Main.hs
Glasgow Haskell Compiler, Version 7.8.4, stage 2 booted by GHC version 7.8.4
Using binary package database: /usr/lib/ghc/package.conf.d/package.cache
hiding package Cabal-1.18.1.5 to avoid conflict with later version Cabal-1.22.1.1
wired-in package ghc-prim mapped to ghc-prim-0.3.1.0-ec14d2f6075975a2ce9112eae431c8e1
wired-in package integer-gmp mapped to integer-gmp-0.5.1.0-de4898ebdc5ab81cedce89121ae9ac84
wired-in package base mapped to base-4.7.0.2-5ef1e7e809bc3b18d74efc783356e209
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-haskell-2.9.0.0-c1976a420ad8b9b589eee08844c59ba2
wired-in package dph-seq not found.
wired-in package dph-par not found.
Hsc static flags:
hiding package Cabal-1.18.1.5 to avoid conflict with later version Cabal-1.22.1.1
wired-in package ghc-prim mapped to ghc-prim-0.3.1.0-ec14d2f6075975a2ce9112eae431c8e1
wired-in package integer-gmp mapped to integer-gmp-0.5.1.0-de4898ebdc5ab81cedce89121ae9ac84
wired-in package base mapped to base-4.7.0.2-5ef1e7e809bc3b18d74efc783356e209
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-haskell-2.9.0.0-c1976a420ad8b9b589eee08844c59ba2
wired-in package dph-seq not found.
wired-in package dph-par not found.
*** Chasing dependencies:
Chasing modules from: *Main.hs
Main.hs:3:8:
Could not find module ‘Data.Natural’
Locations searched:
Data/Natural.hs
Data/Natural.lhs
*** Deleting temp files:
Deleting:
*** Deleting temp dirs:
Deleting:
Вы обновили свой .cabal файл? – Sigrlami
@ Сигрлами, боюсь, я не понимаю. У меня есть каталог под названием '$ HOME/.cabal' и'/tmp/haskell-example/.cabal-sandbox', но не файл '.cabal'. Что мне нужно сделать, чтобы обновить его? –
Когда вы используете команду 'cabal init' внутри вашего проекта, создается файл' foo.cabal', который описывает все необходимые зависимости, и вам нужно добавить их вручную. Предположим, что ваше имя проекта 'foo'.Например, https://github.com/sigrlami/pollock/blob/master/pollock.cabal – Sigrlami