Установите модуль Haskell на Windows 7 - PullRequest
2 голосов
/ 07 марта 2011

Вчера я пытался установить Haskell-модуль через cabal, чтобы познакомиться с установкой модулей в Haskell.Сначала мне нужно было установить cabal.

Моя система: Windows 7

Версия на Haskell-компиляторе: GHC 7.0.2 (ссылка http://www.haskell.org/ghc/download)

Cabal: http://haskell.org/cabal/download.html

Я опишу процесс шаг за шагом, надеясь, что вы можете указать мои неправильные действия как при установке cabal, так и при установке пакета с помощью cabal.

Процедура:

  1. Установленный компилятор Haskell GHC 7.0.2

    Запуск GHCi из меню Пуск Windows 7 дает следующий вывод в DOS-окне:

    GHCi, version 7.0.2: Website  :? for help .
    Loading package ghc-prim ... linking ... done.
    Loading package integer-gmp ... linking ... done.
    Loading package base ... linking ... done.
    Loading package ffi-1.0 ... linking ... done.
    Prelude>                                                 
    

    Пока все хорошо: каждыйФункция внутри базовых пакетов доступна и функционирует так, как она должна.

    Вывод: установка GHCi не содержит ошибочных шагов.

  2. Загружено cabal.exe из источника(см. введение), скопировал его в C: \ ghc \ ghc-7.0.2 \ bin (который добавляется в% Path% -variables)

  3. Загружено cabal-install-0.8.2.tar.gz, так как сайт сообщает пользователям, чтоПакет необходим для чистой установки.
  4. Открыт новый досindow
  5. Набрано cabal update (в соответствии с рекомендациями сайта), оно обновило список и вернулось в режим приглашения пользователя
  6. Набрано cd C:\pathwhere\cabal-install-0.8.2.tar.gz (переключено в каталог, где находится файл установки cabalнаходится
  7. Набрано cabal install cabal-install-0.8.2, после чего установка начала создавать следующий вывод в поле dos:

    Resolving dependencies...
    Downloading containers-0.3.0.0...
    Configuring containers-0.3.0.0...
    Preprocessing library containers-0.3.0.0...
    Building containers-0.3.0.0...
    [1 of 7] Compiling Data.Sequence    ( Data\Sequence.hs, dist\build\Data\Sequence.o )
    [2 of 7] Compiling Data.Set         ( Data\Set.hs, dist\build\Data\Set.o )
    [3 of 7] Compiling Data.Map         ( Data\Map.hs, dist\build\Data\Map.o )
    [4 of 7] Compiling Data.IntSet      ( Data\IntSet.hs, dist\build\Data\IntSet.o )
    [5 of 7] Compiling Data.IntMap      ( Data\IntMap.hs, dist\build\Data\IntMap.o )
    [6 of 7] Compiling Data.Tree        ( Data\Tree.hs, dist\build\Data\Tree.o )
    [7 of 7] Compiling Data.Graph       ( Data\Graph.hs, dist\build\Data\Graph.o )
    cabal: ar is required but it could not be found.
    Downloading filepath-1.1.0.4...
    Configuring filepath-1.1.0.4...
    Preprocessing library filepath-1.1.0.4...
    Building filepath-1.1.0.4...
    [1 of 3] Compiling System.FilePath.Posix ( System\FilePath\Posix.hs, dist\build\System\FilePath\Posix.o )
    [2 of 3] Compiling System.FilePath.Windows ( System\FilePath\Windows.hs, dist\build\System\FilePath\Windows.o )
    [3 of 3] Compiling System.FilePath  ( System\FilePath.hs, dist\build\System\FilePath.o )
    cabal: ar is required but it could not be found.
    Downloading parsec-2.1.0.1...
    Configuring parsec-2.1.0.1...
    Preprocessing library parsec-2.1.0.1...
    Building parsec-2.1.0.1...
    [ 1 of 10] Compiling Text.ParserCombinators.Parsec.Pos ( Text\ParserCombinators\Parsec\Pos.hs, dist\build\Text\ParserCombinators\Parsec\Pos.o )
    [ 2 of 10] Compiling Text.ParserCombinators.Parsec.Error ( Text\ParserCombinators\Parsec\Error.hs, dist\build\Text\ParserCombinators\Parsec\Error.o )
    [ 3 of 10] Compiling Text.ParserCombinators.Parsec.Prim ( Text\ParserCombinators\Parsec\Prim.hs, dist\build\Text\ParserCombinators\Parsec\Prim.o )
    [ 4 of 10] Compiling Text.ParserCombinators.Parsec.Char ( Text\ParserCombinators\Parsec\Char.hs, dist\build\Text\ParserCombinators\Parsec\Char.o )
    [ 5 of 10] Compiling Text.ParserCombinators.Parsec.Combinator ( Text\ParserCombinators\Parsec\Combinator.hs, dist\build\Text\ParserCombinators\Parsec\Combinator.o )
    [ 6 of 10] Compiling Text.ParserCombinators.Parsec.Expr ( Text\ParserCombinators\Parsec\Expr.hs, dist\build\Text\ParserCombinators\Parsec\Expr.o )
    [ 7 of 10] Compiling Text.ParserCombinators.Parsec ( Text\ParserCombinators\Parsec.hs, dist\build\Text\ParserCombinators\Parsec.o )
    [ 8 of 10] Compiling Text.ParserCombinators.Parsec.Token ( Text\ParserCombinators\Parsec\Token.hs, dist\build\Text\ParserCombinators\Parsec\Token.o )
    [ 9 of 10] Compiling Text.ParserCombinators.Parsec.Perm ( Text\ParserCombinators\Parsec\Perm.hs, dist\build\Text\ParserCombinators\Parsec\Perm.o )
    [10 of 10] Compiling Text.ParserCombinators.Parsec.Language ( Text\ParserCombinators\Parsec\Language.hs, dist\build\Text\ParserCombinators\Parsec\Language.o )
    cabal: ar is required but it could not be found.
    Downloading time-1.1.4...
    [1 of 1] Compiling Main             ( C:\Users\altug\AppData\Local\Temp\time-1.1.43528time-1.1.4\Setup.hs, C:\Users\altug\AppData\Local\Temp\time-1.1.43528\time-1.1.4\dist\setup\Main.o )
    C:\Users\altug\AppData\Local\Temp\time-1.1.43528\time-1.1.4\Setup.hs:5:1:
        Warning: In the use of `runTests'
                 (imported from Distribution.Simple, but defined in Distribution.Simple.UserHooks):
                 Deprecated: "Please use the new testing interface instead!"
    Linking C:\Users\altug\AppData\Local\Temp\time-1.1.43528\time-1.1.4\dist\setup\setup.exe ...
    Configuring time-1.1.4...
    Preprocessing library time-1.1.4...
    Building time-1.1.4...
    [ 1 of 24] Compiling Data.Time.Clock.CTimeval ( Data\Time\Clock\CTimeval.hs, dist\build\Data\Time\Clock\CTimeval.o )
    [ 2 of 24] Compiling Data.Time.Clock.Scale ( Data\Time\Clock\Scale.hs, dist\build\Data\Time\Clock\Scale.o )
    [ 3 of 24] Compiling Data.Time.Calendar.Private ( Data\Time\Calendar\Private.hs, dist\build\Data\Time\Calendar\Private.o )
    [ 4 of 24] Compiling Data.Time.Calendar.MonthDay ( Data\Time\Calendar\MonthDay.hs, dist\build\Data\Time\Calendar\MonthDay.o )
    [ 5 of 24] Compiling Data.Time.Calendar.Days ( Data\Time\Calendar\Days.hs, dist\build\Data\Time\Calendar\Days.o )
    [ 6 of 24] Compiling Data.Time.Calendar.OrdinalDate ( Data\Time\Calendar\OrdinalDate.hs, dist\build\Data\Time\Calendar\OrdinalDate.o )
    [ 7 of 24] Compiling Data.Time.Calendar.Gregorian ( Data\Time\Calendar\Gregorian.hs, dist\build\Data\Time\Calendar\Gregorian.o )
    [ 8 of 24] Compiling Data.Time.Calendar.WeekDate ( Data\Time\Calendar\WeekDate.hs, dist\build\Data\Time\Calendar\WeekDate.o )
    [ 9 of 24] Compiling Data.Time.Calendar.JulianYearDay ( Data\Time\Calendar\JulianYearDay.hs, dist\build\Data\Time\Calendar\JulianYearDay.o )
    [10 of 24] Compiling Data.Time.Calendar.Julian ( Data\Time\Calendar\Julian.hs, dist\build\Data\Time\Calendar\Julian.o )
    [11 of 24] Compiling Data.Time.Clock.UTC ( Data\Time\Clock\UTC.hs, dist\build\Data\Time\Clock\UTC.o )
    [12 of 24] Compiling Data.Time.Clock.POSIX ( Data\Time\Clock\POSIX.hs, dist\build\Data\Time\Clock\POSIX.o )
    [13 of 24] Compiling Data.Time.Clock.UTCDiff ( Data\Time\Clock\UTCDiff.hs, dist\build\Data\Time\Clock\UTCDiff.o )
    [14 of 24] Compiling Data.Time.Clock  ( Data\Time\Clock.hs, dist\build\Data\Time\Clock.o )
    [15 of 24] Compiling Data.Time.LocalTime.TimeZone ( Data\Time\LocalTime\TimeZone.hs, dist\build\Data\Time\LocalTime\TimeZone.o )
    [16 of 24] Compiling Data.Time.LocalTime.TimeOfDay ( Data\Time\LocalTime\TimeOfDay.hs, dist\build\Data\Time\LocalTime\TimeOfDay.o )
    [17 of 24] Compiling Data.Time.Calendar ( Data\Time\Calendar.hs, dist\build\Data\Time\Calendar.o )
    [18 of 24] Compiling Data.Time.Calendar.Easter ( Data\Time\Calendar\Easter.hs, dist\build\Data\Time\Calendar\Easter.o )
    [19 of 24] Compiling Data.Time.LocalTime.LocalTime ( Data\Time\LocalTime\LocalTime.hs, dist\build\Data\Time\LocalTime\LocalTime.o )
    [20 of 24] Compiling Data.Time.LocalTime ( Data\Time\LocalTime.hs, dist\build\Data\Time\LocalTime.o )
    [21 of 24] Compiling Data.Time.Clock.TAI ( Data\Time\Clock\TAI.hs, dist\build\Data\Time\Clock\TAI.o )
    [22 of 24] Compiling Data.Time.Format.Parse ( Data\Time\Format\Parse.hs, dist\build\Data\Time\Format\Parse.o )
    [23 of 24] Compiling Data.Time.Format ( Data\Time\Format.hs, dist\build\Data\Time\Format.o )
    [24 of 24] Compiling Data.Time        ( Data\Time.hs, dist\build\Data\Time.o )
    Registering time-1.1.4...
    Installing library in
    C:\Users\altug\AppData\Roaming\cabal\time-1.1.4\ghc-7.0.2
    Registering time-1.1.4...
    Downloading random-1.0.0.3...
    Configuring random-1.0.0.3...
    Preprocessing library random-1.0.0.3...
    Building random-1.0.0.3...
    [1 of 1] Compiling System.Random    ( System\Random.hs, dist\build\System\Random.o )
    cabal: ar is required but it could not be found.
    Downloading transformers-0.2.2.0...
    Configuring transformers-0.2.2.0...
    Preprocessing library transformers-0.2.2.0...
    Building transformers-0.2.2.0...
    [ 1 of 21] Compiling Data.Functor.Product ( Data\Functor\Product.hs, dist\buildData\Functor\Product.o )
    [ 2 of 21] Compiling Data.Functor.Constant ( Data\Functor\Constant.hs, dist\build\Data\Functor\Constant.o )
    [ 3 of 21] Compiling Data.Functor.Compose ( Data\Functor\Compose.hs, dist\build\Data\Functor\Compose.o )
    [ 4 of 21] Compiling Data.Functor.Identity ( Data\Functor\Identity.hs, dist\build\Data\Functor\Identity.o )
    [ 5 of 21] Compiling Control.Monad.Trans.Class ( Control\Monad\Trans\Class.hs, dist\build\Control\Monad\Trans\Class.o )
    [ 6 of 21] Compiling Control.Monad.IO.Class ( Control\Monad\IO\Class.hs, dist\build\Control\Monad\IO\Class.o )
    [ 7 of 21] Compiling Control.Monad.Trans.Cont ( Control\Monad\Trans\Cont.hs, dist\build\Control\Monad\Trans\Cont.o )
    [ 8 of 21] Compiling Control.Monad.Trans.Error ( Control\Monad\Trans\Error.hs, dist\build\Control\Monad\Trans\Error.o )
    [ 9 of 21] Compiling Control.Monad.Trans.Identity ( Control\Monad\Trans\Identity.hs, dist\build\Control\Monad\Trans\Identity.o )
    [10 of 21] Compiling Control.Monad.Trans.List ( Control\Monad\Trans\List.hs, dist\build\Control\Monad\Trans\List.o )
    [11 of 21] Compiling Control.Monad.Trans.Maybe ( Control\Monad\Trans\Maybe.hs, dist\build\Control\Monad\Trans\Maybe.o )
    [12 of 21] Compiling Control.Monad.Trans.Reader ( Control\Monad\Trans\Reader.hs, dist\build\Control\Monad\Trans\Reader.o )
    [13 of 21] Compiling Control.Monad.Trans.RWS.Lazy ( Control\Monad\Trans\RWS\Lazy.hs, dist\build\Control\Monad\Trans\RWS\Lazy.o )
    [14 of 21] Compiling Control.Monad.Trans.RWS ( Control\Monad\Trans\RWS.hs, dist\build\Control\Monad\Trans\RWS.o )
    [15 of 21] Compiling Control.Monad.Trans.RWS.Strict ( Control\Monad\Trans\RWS\Strict.hs, dist\build\Control\Monad\Trans\RWS\Strict.o )
    [16 of 21] Compiling Control.Monad.Trans.State.Lazy ( Control\Monad\Trans\State\Lazy.hs, dist\build\Control\Monad\Trans\State\Lazy.o )
    [17 of 21] Compiling Control.Monad.Trans.State ( Control\Monad\Trans\State.hs, dist\build\Control\Monad\Trans\State.o )
    [18 of 21] Compiling Control.Monad.Trans.State.Strict ( Control\Monad\Trans\State\Strict.hs, dist\build\Control\Monad\Trans\State\Strict.o )
    [19 of 21] Compiling Control.Monad.Trans.Writer.Lazy ( Control\Monad\Trans\Writer\Lazy.hs, dist\build\Control\Monad\Trans\Writer\Lazy.o )
    [20 of 21] Compiling Control.Monad.Trans.Writer ( Control\Monad\Trans\Writer.hs, dist\build\Control\Monad\Trans\Writer.o )
    [21 of 21] Compiling Control.Monad.Trans.Writer.Strict ( Control\Monad\Trans\Writer\Strict.hs, dist\build\Control\Monad\Trans\Writer\Strict.o )
    cabal: ar is required but it could not be found.
    Downloading zlib-0.5.3.1...
    Configuring zlib-0.5.3.1...
    Preprocessing library zlib-0.5.3.1...
    Building zlib-0.5.3.1...
    [1 of 5] Compiling Codec.Compression.Zlib.Stream ( dist\build\Codec\Compression\Zlib\Stream.hs, dist\build\Codec\Compression\Zlib\Stream.o )
    [2 of 5] Compiling Codec.Compression.Zlib.Internal ( Codec\Compression\Zlib\Internal.hs, dist\build\Codec\Compression\Zlib\Internal.o )
    [3 of 5] Compiling Codec.Compression.Zlib.Raw ( Codec\Compression\Zlib\Raw.hs, dist\build\Codec\Compression\Zlib\Raw.o )
    [4 of 5] Compiling Codec.Compression.Zlib ( Codec\Compression\Zlib.hs, dist\build\Codec\Compression\Zlib.o )
    [5 of 5] Compiling Codec.Compression.GZip ( Codec\Compression\GZip.hs, dist\build\Codec\Compression\GZip.o )
    cabal: ar is required but it could not be found.
    cabal: Error: some packages failed to install:
    Cabal-1.8.0.6 depends on filepath-1.1.0.4 which failed to install.
    HTTP-4000.1.1 depends on transformers-0.2.2.0 which failed to install.
    cabal-install-0.8.2 depends on zlib-0.5.3.1 which failed to install.
    containers-0.3.0.0 failed during the building phase. The exception was:
    ExitFailure 1
    directory-1.0.1.2 depends on filepath-1.1.0.4 which failed to install.
    filepath-1.1.0.4 failed during the building phase. The exception was:
    ExitFailure 1
    mtl-2.0.1.0 depends on transformers-0.2.2.0 which failed to install.
    network-2.3.0.2 depends on parsec-2.1.0.1 which failed to install.
    parsec-2.1.0.1 failed during the building phase. The exception was:
    ExitFailure 1
    process-1.0.1.5 depends on filepath-1.1.0.4 which failed to install.
    random-1.0.0.3 failed during the building phase. The exception was:
    ExitFailure 1
    transformers-0.2.2.0 failed during the building phase. The exception was:
    ExitFailure 1
    zlib-0.5.3.1 failed during the building phase. The exception was:
    ExitFailure 1
    

    Мой вывод:

    Как единое целоелегко увидеть, вывод указывает на некоторые ошибки, но я понятия не имел, что они означают.Я продолжал пытаться установить свой пакет алгебры, сосредоточив внимание на том, чтобы сделать его доступным для Dos-Interpeter с шага 1.

  8. Снова в окне ввода в поле ввода я набрал cabal install constructive-algebra, который создалэто вывод:

    Resolving dependencies...
    cabal: cannot configure algebra-0.0.0.1. It requires base >=3.0 && <4.1
    For the dependency on base >=3.0 && <4.1 there are these packages:
    base-3.0.3.1, base-3.0.3.2 and base-4.0.0.0. However none of them are available.
    base-3.0.3.1 was excluded because of the top level dependency base -any
    base-3.0.3.2 was excluded because of the top level dependency base -any
    base-4.0.0.0 was excluded because of the top level dependency base -any
    

Я полагаю, что пакет не установлен.Мне нужен кто-то, кто может объяснить, какие именно шаги мне нужно сделать, чтобы заставить работать модули.

Спасибо за чтение этого поста и ответ таким образом, который помогает мне понять его, И работает интерпретатор и компилятор.

Ответы [ 3 ]

3 голосов
/ 29 марта 2011

Самый простой способ - получить платформу Haskell, подобную рекомендованной DasBoot, но я все равно постараюсь ответить на ваши вопросы:

1) По первой части вашего вопроса ваши установки не удаются, потому что что-то не так с вашим путем. инструмент "ар" не может быть найден. ar используется при создании библиотек. Если вы введете просто «ar» в командном окне, оно должно вернуть что-то вроде

Использование: ar [параметры эмуляции] [-] {dmpqrstx} [abcfilNoPsSuvV] [имя-члена] [количество ] файл архива ... ar -M [

Если этого не произойдет, вам нужно добавить папку, содержащую ar (вероятно, C: \ ghc \ ghc-7.0.2 \ mingw \ bin), в переменную пути env в Windows.

2) Ваша библиотека алгебры не будет установлена ​​под 7.0.2, по крайней мере, не из коробки. Алгебра имеет зависимость, указанную как «Зависимости: база> = 3.0 && <4.1» </p>

но ghc 7.0 поставляется с базой 4.3. Вот почему вы получили:

Кабал: невозможно настроить алгебру-0.0.0.1. Требуется база> = 3.0 && <4.1 </p>

Для зависимости от базы> = 3.0 && <4.1 существуют следующие пакеты: </p>

base-3.0.3.1, base-3.0.3.2 и base-4.0.0.0. Однако ни один из них не доступен

К счастью, это можно легко исправить для этой конкретной упаковки. просто сделай

Кабал распаковывает алгебру

cd algebra-0.0.0.1

блокнот algebra.cabal

изменить 4,1 на 4,4

Кабал установка

и это должно сделать

2 голосов
/ 07 марта 2011

Я установил полный пакет с Скачать Haskell Этот пакет включает в себя cabal.Я запускаю его на win7, и до сих пор не было никаких проблем.

И FWIW, если вы нажмете на ссылку для скачивания в своем сообщении, а затем попытаетесь скачать последнюю версию, появится большое сообщениекоторый предлагает скачать платформу haskell по ссылке, которую я дал.

1 голос
/ 07 марта 2011

имя пакета - конструктивно-алгебра, но каково его имя модуля? Это имя модуля - то, что вы должны использовать в ghci.

...