Нет доступной версии ghc-prim -any с GHC 7.2.2

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

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

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>file пропускает «cabal: не удается настроить bytestring-0.9.2.0. Требуется ghc-prim -any... (то же, что и раньше)»


person Jim Stuttard    schedule 04.01.2012    source источник
comment
Не используйте для этого cabal-dev, запускайте cabal напрямую, чтобы его вывод можно было захватить. Но не забывайте --dry-run.   -  person Daniel Fischer    schedule 05.01.2012
comment
О, и на самом деле более интересно, чем то, почему он не переустановит байтовую строку, это то, почему он считает, что должен. Какой пакет вы пытались установить, когда появились эти ошибки? $ cabal install -v3 --dry-run that-package было бы неплохо.   -  person Daniel Fischer    schedule 05.01.2012
comment
cabal install -v3 --dry-run bytestring =› cabal: невозможно настроить bytestring-0.9.2.0. Требуется ghc-prim -any. Доступной версии нет. Объявление IPkg зависит от целочисленного простого [   -  person Jim Stuttard    schedule 08.01.2012
comment
cabal-install -v3 --dry-run ad =› cabal: не удается настроить base-4.4.1.0. Для этого требуется ghc-prim -any, integer-simple -any и rts -any. Доступной версии нет..   -  person Jim Stuttard    schedule 08.01.2012
comment
Я попытался собрать ghc-7.2.2 src (используя установленный двоичный файл ghc-7.2.2) с помощью целочисленного простого, но. ./configure перезаписывает редактирование config.mk. Теперь я обнаружил, что не могу установить ghc-7.2.2 src с integer-gmp.   -  person Jim Stuttard    schedule 08.01.2012
comment
Вторая попытка выдает бессмысленное сообщение: Настройка Cabal-1.12.0... ghc-cabal: Отсутствуют как минимум следующие зависимости base ›=4 && ‹3 && ›=2 && ‹5 путь к файлу ›= 1 && ‹3 unix ›= 2 && ‹=2.6 make clean Третья попытка выдает: Cabal-1.12.0... ghc-cabal: Не удается найти программу hs-color в '' или по пути   -  person Jim Stuttard    schedule 08.01.2012
comment
grep -r в дереве src возвращает config.mk и ghc.mk как единственные ссылки на integer-simple или $INTEGER_LIBRARY, ghc.mk имеет условное выражение, но я не вижу, где оно установлено.   -  person Jim Stuttard    schedule 08.01.2012
comment
Не редактируйте config.mk, вы должны редактировать config.mk.in. config.mk генерируется из этого.   -  person Daniel Fischer    schedule 08.01.2012
comment
Переустановка ghc-7.2.2-i386-unknown.linux.tar.bz2 привела к ошибке 2, которую я изначально не заметил. make install =› utils/ghc-cabal/dist/install/build/tmp/ghc-cabal install /home/jim/lib/ghc-7.2.2/ghc /home/jim/lib/ghc-7.2.2/ghc -pkg strip /home/jim/lib/ghc-7.2.2 library/ghc-prim dist install (продолжение..)   -  person Jim Stuttard    schedule 08.01.2012
comment
'' '/home/jim' '/home/jim/lib/ghc-7.2.2' '/home/jim/share/doc/ghc/html/libraries' НЕТ Установка библиотеки в /home/jim/lib/ghc -7.2.2/package.conf.d/package-cache: openBinaryFile: не существует (нет такого файла или каталога) make [1]*** [установить пакеты] Ошибка 1 make *** [установить пакеты] Ошибка 2 [   -  person Jim Stuttard    schedule 08.01.2012
comment
Несмотря на ошибку, ghc установился. Я пробовал ghc-7.2.2-src.tar.bz2   -  person Jim Stuttard    schedule 08.01.2012
comment
Несмотря на ошибку, ghc установился. Я попробовал ghc-7.2.2-src.tar.bz2 configure --prefix=$HOME/simple =› configure: сборка в дереве ghc-pwd \n /home/jim/lib/ghc-7.2.2/package. conf.d/package.cache openBinaryFile: не существует... настроить: Ошибка: не удалось собрать ghc-pwd Tnx Daniel для сохранения.   -  person Jim Stuttard    schedule 08.01.2012
comment
Извините, я потерял представление о ситуации. Можете обновить вопрос и выложить ситуацию, что где установлено, что работает, что нет?   -  person Daniel Fischer    schedule 08.01.2012
comment
Таким образом, бинарный файл vanilla не создал файл package.cache.   -  person Jim Stuttard    schedule 08.01.2012
comment
Извините, если я пропустил описание некоторых шагов. После очистки всей моей установки ghc я установил vanilla ghc-7.2.2-i386-linux-unknown.tar.bz2. Я заметил сообщения об ошибках в 6-м и 7-м предыдущих комментариях. Это установило рабочую копию ghc, но не cabal, которая ведет себя в соответствии с OP. Игнорируя это, я попытался установить ghc-7.2.2-src.tar.bz2, настроить не удалось, как указано в третьем предыдущем комментарии. ХТН.   -  person Jim Stuttard    schedule 08.01.2012
comment
Чтобы повторить эксперимент: помимо проверки того, что я удалил весь ghc, включая $HOME/share, и удаления $GHC_PACKAGE_PATH из .bashrc, двоичный файл vanilla ghc теперь устанавливается нормально. Постараюсь построить целочисленную простую версию.   -  person Jim Stuttard    schedule 08.01.2012
comment
Хорошо, теперь должно сработать, я думаю. Если нет, дайте мне знать.   -  person Daniel Fischer    schedule 08.01.2012
comment
Боюсь, нет. Отредактировав config.mk.in на integer-simple, configure --prefix=$HOME/simple затем make install выдает такое же бессмысленное сообщение об ошибке, как и раньше: Configuring Cabal-1.12.0... ghc-cabal: по крайней мере следующее отсутствуют зависимости base ›=4 && ‹3 && ›=2 && ‹5. Я не знаю, куда об этом нужно сообщить.   -  person Jim Stuttard    schedule 09.01.2012


Ответы (1)


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

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

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

Проблема в том, что один (или несколько) пакетов, которые вы пытаетесь установить, зависят от 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 на integer-simple и сохраните
  3. $ cd ghc-7.2.2
  4. $ ./configure --prefix=$HOME/где/вы/хотите/это
  5. $ сделать && сделать установить
person Daniel Fischer    schedule 05.01.2012
comment
К сожалению, cabal-dev install llvm возвращает: cabal: не удается настроить bytestring-0.9.0.2. Для этого требуется ghc-prim -any, но они оба установлены. Доступной версии нет.... Я получаю это сообщение с текстом, hledger и другими пакетами, которые зависят только от базы. - person Jim Stuttard; 05.01.2012
comment
1. Это ванильный двоичный файл или только что созданный с целым числом? 2. Сообщение об ошибке бесполезно, частая проблема с кабалом, запустите его с большей детализацией, чтобы получить больше информации, в частности, с какой стати он хочет установить такую ​​древнюю версию байтовой строки, если только вы не опечатались в версии. , в таком случае зачем его переустанавливать? Запустите $ ghc-pkg check для поиска сломанных пакетов. - person Daniel Fischer; 05.01.2012
comment
Ванильный бинарник. Попытка bytestring с cabal-dev install -v3 bytestring --reinstall выдает: cabal: не удается настроить bytestring. и нет доступного ghc-prim и т. д. Как вы сказали, cabal не дает больше информации, даже с -v3. Я только что сделал переустановку ghc. Спасибо большое за помощь. - person Jim Stuttard; 05.01.2012
comment
Сама cabal должна довольно много рассказать вам о -v3, какие версии пакетов она выбирает, а какие отбрасывает. Чтобы ничего не напортачить, сделайте пробный прогон: $ cabal install --reinstall -v3 --dry-run bytestring. - person Daniel Fischer; 05.01.2012
comment
Добавил информацию в ОП. - person Jim Stuttard; 05.01.2012
comment
Проверка ghc-pkg просто перечисляет мои обычные предупреждения пикши об отсутствующих документах. - person Jim Stuttard; 05.01.2012
comment
Отправлено бессмысленное сообщение об ошибке сборки в ghc trac как тикет № 5765. - person Jim Stuttard; 12.01.2012