Нет доступной версии ghc-prim -any с GHC 7.2.2 - PullRequest
2 голосов
/ 04 января 2012

У меня есть ghc-7.2.2 неизвестный linux tar.bz2, установленный в $HOME на archlinux.

После успешной установки нескольких пакетов с помощью cabal-dev, например, пытается установить.parsec-numbers, text, ad и т. д. Я получаю:

cabal: cannot configure base-4.4.1.0 It requires ghc-prim -any
integer-simple and rts -any
There is no available version (of each of the above for example)

Это очевидная ошибка в моей установке или возможная ошибка?

У меня установлен соответствующий $GHC_PACKAGES_PATH набор, и я запустилсяghc-pkg recache.

Вот мой список установленных пакетов:

/home/jim/cabal-dev/packages-7.2.2.conf:
    QuickCheck-2.4.2
    bmp-1.1.2.1
    comonad-1.1.1.1
    comonad-transformers-2.0.2
    comonads-fd-2.0.2
    contravariant-0.1.3
    data-lens-2.0.2
    data-reify-0.6
    distributive-0.2.0.1
    free-2.0.2
    mtl-2.0.1.0
    primitive-0.4.0.1
    random-1.0.1.1
    repa-2.2.0.1
    repa-algorithms-2.2.0.1
    repa-bytestring-2.2.0.1
    repa-io-2.2.0.1
    semigroupoids-1.2.6
    semigroups-0.8
    transformers-0.2.2.0
    vector-0.9.1

/home/jim/lib/ghc-7.2.2/package.conf.d:
    Cabal-1.12.0
    array-0.3.0.3
    base-4.4.1.0
    bin-package-db-0.0.0.0
    (binary-0.5.0.2)
    bytestring-0.9.2.0
    containers-0.4.1.0
    directory-1.1.0.1
    extensible-exceptions-0.1.1.3
    ffi-1.0
    filepath-1.2.0.1
    (ghc-7.2.2)
    ghc-prim-0.2.0.0
    (haskell2010-1.1.0.0)
    (haskell98-2.0.0.0)
    hoopl-3.8.7.1
    hpc-0.5.1.0
    integer-gmp-0.3.0.0
    old-locale-1.0.0.3
    old-time-1.0.0.7
    pretty-1.1.0.0
    process-1.1.0.0
    rts-1.0
    template-haskell-2.6.0.0
    time-1.2.0.5
    unix-2.5.0.0

Да, bytestring-0.9.0.2 должен был быть -0.9.2.0, извинения.

cabal-dev -v3 install bytestring --reinstall produces:

cabal-dev 0.9
built with Cabal 1.12.0
searching for cabal in path.
found cabal at /usr/bin/cabal
("/usr/bin/cabal",["--numeric-version"])
/usr/bin/cabal is version 0.10.2
Using cabal-install 0.10.2 at FoundOnSystem {locationPath = "/usr/bin/cabal"}
No sandbox specified. Using cabal-dev
Using cabal-dev as the relative cabal-dev sandbox
Using /home/jim/cabal-dev as the cabal-dev sandbox
Creating local repo /home/jim/cabal-dev/packages
searching for ghc-pkg in path.
found ghc-pkg at /home/jim/bin/ghc-pkg
("/home/jim/bin/ghc-pkg",["--version"])
/home/jim/bin/ghc-pkg is version 7.2.2
Using ghc-pkg 7.2.2
("/usr/bin/cabal",["--version"])
Complete arguments to cabal-install:
["--config-file=/home/jim/cabal-dev/cabal.config","install","--verbose=3","--reinstall"]
("/usr/bin/cabal",["--config-file=/home/jim/cabal-dev/cabal.config","install","--verbose=3","--reinstall","bytestring"])
searching for ghc in path.
found ghc at /home/jim/bin/ghc
("/home/jim/bin/ghc",["--numeric-version"])
/home/jim/bin/ghc is version 7.2.2
looking for tool "ghc-pkg" near compiler in /home/jim/bin
found ghc-pkg in /home/jim/bin/ghc-pkg
("/home/jim/bin/ghc-pkg",["--version"])
/home/jim/bin/ghc-pkg is version 7.2.2
("/home/jim/bin/ghc",["--supported-languages"])
("/home/jim/bin/ghc",["--info"])
Reading installed packages...
("/home/jim/bin/ghc-pkg",["dump","--global","-v2"])
("/home/jim/bin/ghc-pkg",["dump","--package-conf=/home/jim/cabal-dev/packages-7.2.2.conf","-v2"])
("/home/jim/bin/ghc",["--print-libdir"])
Reading available packages...
Resolving dependencies...
selecting
/usr/bin/cabal returned ExitFailure 1

Ха-ха.Попытка перехватить вывод с помощью файла & 2> пропускает файл "cabal: невозможно настроить bytestring-0.9.2.0. Требуется ghc-prim -any ... (как и прежде)"

1 Ответ

3 голосов
/ 05 января 2012

Это сообщение,

cabal: невозможно настроить base-4.4.1.0

означает, что cabal пытается переустановить базу, или, скорее, к счастью, она не пытается на самом делесделать это (это невозможно, база слишком тесно переплетена с компилятором, вы абсолютно точно не можете переустановить это).Но вы пытаетесь установить что-то, что потребует переустановки базы.

Проблема в том, что один (или более) из пакетов, которые вы пытаетесь установить, зависит от integer-simple.base зависит от integer-gmp или integer-simple.Оба этих пакета предоставляют реализацию типа Integer и некоторые основные операции с ним, поэтому вы можете иметь только один из этих двух.По умолчанию это integer-gmp, потому что это тот, который имеет гораздо более высокую производительность, и это тот, который вы установили (и все [?] Встроенные двоичные файлы собраны с этим).

Если вам действительно нужен пакет в зависимости отinteger-simple, вы должны собрать GHC из исходного кода самостоятельно (тем не менее, я рекомендую сохранить тот, у которого integer-gmp после сборки, вам придется хранить их в разных местах, хотя, если они имеют одинаковую версию GHC, например,нормальный в ~ / bin (и ~ / lib), другой в ~ / simple / $ dir).

Собрать его из исходного кода не очень сложно, хотя и требуется некоторое время.Процедура

  1. скачать архив с исходными кодами и распаковать его
  2. открыть mk / config.mk.in в редакторе, изменить INTEGER_LIBRARY на целочисленное и сохранить
  3. $ cd ghc-7.2.2
  4. $ ./configure --prefix = $ HOME / whereever / you / want / it
  5. $ make && make install
...