LINUX.ORG.RU

[ubuntu] ghc-7.2.1 cabal errors

 


0

1

Нужно было обновить пакет base, для этого поставил свежий ghc-7.2.1 из ppa.

$> cabal update
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install

$> cabal install cabal-install
Resolving dependencies...
cabal: cannot configure unix-2.4.2.0. It requires base >=4.2 && <4.4
For the dependency on base >=4.2 && <4.4 there are these packages:
base-4.2.0.0, base-4.2.0.1, base-4.2.0.2, base-4.3.0.0 and base-4.3.1.0.
However none of them are available.
base-4.2.0.0 was excluded because base-4.4.0.0 was selected instead
base-4.2.0.0 was excluded because of the top level dependency base -any
base-4.2.0.1 was excluded because base-4.4.0.0 was selected instead
base-4.2.0.1 was excluded because of the top level dependency base -any
base-4.2.0.2 was excluded because base-4.4.0.0 was selected instead
base-4.2.0.2 was excluded because of the top level dependency base -any
base-4.3.0.0 was excluded because base-4.4.0.0 was selected instead
base-4.3.0.0 was excluded because of the top level dependency base -any
base-4.3.1.0 was excluded because base-4.4.0.0 was selected instead
base-4.3.1.0 was excluded because of the top level dependency base -any

Следующее я вообще не понимаю

$> cabal install --reinstall monadrandom
Resolving dependencies...
Configuring MonadRandom-0.1.6...
Preprocessing library MonadRandom-0.1.6...
Building MonadRandom-0.1.6...
[1 of 2] Compiling Control.Monad.Random.Class ( Control/Monad/Random/Class.hs, dist/build/Control/Monad/Random/Class.o )
[2 of 2] Compiling Control.Monad.Random ( Control/Monad/Random.hs, dist/build/Control/Monad/Random.o )

Control/Monad/Random.hs:56:9:
    Illegal datatype context (use -XDatatypeContexts): RandomGen g =>
cabal: Error: some packages failed to install:
MonadRandom-0.1.6 failed during the building phase. The exception was:
ExitFailure 1

Лучше наверняка было бы поставить ghc-7.0.4, он хотя бы стабильный? Не могу найти соответствующего ppa.

Ответ на: комментарий от garmonbozia

А что, 7.0.4 уже есть?

А, в oneiric только 7.0.3, но учитывая зависимости ghc можно взять пакет из precise и собрать его под свою систему.

И да, что за «официальные репозитории»?

O_o

Begemoth ★★★★★
()

Нужно было обновить пакет base, для этого поставил свежий ghc-7.2.1 из ppa.

base идёт вместе с бинарной сборкой ghc, его cabal-ом ставит не нужно:

$ sudo ./ghc_switch.sh 7.0
ghc -> ghc-7.0.3
ghci -> ghci-7.0.3
ghc-pkg -> ghc-pkg-7.0.3
haddock -> haddock-ghc-7.0.3
$ ghc-pkg describe base
name: base
version: 4.3.1.0
...
$ sudo ./ghc_switch.sh 7.4
ghc -> ghc-7.4.0.20111219
ghci -> ghci-7.4.0.20111219
ghc-pkg -> ghc-pkg-7.4.0.20111219
haddock -> haddock-ghc-7.4.0.20111219
$ ghc-pkg describe base
name: base
version: 4.5.0.0
...

Лучше наверняка было бы поставить ghc-7.0.4, он хотя бы стабильный? Не могу найти соответствующего ppa.

haskell-platform 2011.4.0.0 в precise, там как раз GHC 7.0.4. Вообще cabal нормально работает только с GHC 7.0.*, с 7.2.* и 7.4.* у меня он точно также не работает.

quasimoto ★★★★
()
Ответ на: комментарий от quasimoto

base идёт вместе с бинарной сборкой ghc

В prefix лежит, например - /usr/local/lib/ghc-*/base-*, там же array, cabal, containers и т.п. основные зависимости.

quasimoto ★★★★
()

Кабал — такой кабал. Расслабься, все нормально. У меня тоже cabal-install не собирается. Мейнтейнеры его ленивы жутко.

И без танцев с бубнами или выкачивания из гита он у меня ВООБЩЕ ни разу не собирался.

Что там за фигня с пакетами base я вообще не в курсе. Что по этому поводу говрит ghc-pkg list.

Советы такие:

1. Не пользуйся дистрибутивной сборкой. Скачал бинарники, настоил prefix куда-нибудь в ~, сделал make install, добвил GHC и ~/.cabal/bin в PATH, и работай сколько влезет. Мало ли чего там мейнтейнеры накрутили.

2. Не забывай, что в системе пакетов GHC пакеты могут ставиться как в «системную» область, так и в «пользовательскую» область, обычно это ~/.cabal/bin.

3. Бинарники GHC, все-равно идут с набором предопределенных пакетов (для этого и нужна «системная область»), даже если это не Haskell Platform (в которой их просто больше).

4. Понятно дело, что определенная версия GHC заточена под определенную версию base, которая в свою очередь заточена под специфичные версии своих зависимостей.

5. Не забывай, что cabal-install — всегр лишь удобный интрефейс к кабалу, никакого отношения к нему не имеющий.

6. Кстати, как и кабал к системе пакетов GHC ;)

7. Пакеты можно и нужно ставить помимо cabal-install. Распаковываем пакет, runhaskell Setup.hs последовательно с configure, build, install. На практике тебе вручную придется править xxx.cabal

8. Не забывай про ghc-pkg

9. Юзай haskell platform, коли не хочешь траходрома.

Macil ★★★★★
()
Ответ на: комментарий от Macil

Да, кстати, а как ты пакеты удаляешь? Просто стереть файлы недостаточно. Он все-равно будет зарегистрирован в GHC.

Macil ★★★★★
()
Ответ на: комментарий от garmonbozia

как поставить 7.0.4?

Непосредственно:

version="7.0.4"
arch="i386"
prefix="/usr/local/"

wget http://www.haskell.org/ghc/dist/${version}/ghc-${version}-${arch}-unknown-linux.tar.bz2
tar -xjf ghc-${version}-${arch}-unknown-linux.tar.bz2
cd ghc-${version}
./configure --prefix=${prefix} && sudo make install

и потом можно поставит haskell-platform (http://www.vex.net/~trebla/haskell/haskell-platform.xhtml). Или можно сразу поставить последний haskell-platform из precise (http://packages.ubuntu.com/precise/haskell-platform).

Как уже было сказано - при установке ghc или haskell-platform базовые пакеты (base, cabal, etc) оказываются в prefix. В будущем, при использовании cabal install, новые пакеты будут ставится в ~/.cabal и автоматически регистрироваться с помощью ghc-pkg (так что если их нужно вынести - чистим ~/.cabal/... и командуем ghc-pkg unregister ...).

quasimoto ★★★★
()

Так, а теперь помогите мне. То же самое только для 7.4.1. Его релизнули, но hackage вместе с cabal-install к нему не готов. Ждать что-ли?

anonymous
()
Ответ на: комментарий от garmonbozia

> Ещё раз, как поставить 7.0.4?

Из DEB-SRC. Скачиваешь его (раздел «исходный код» на странице программы на packages.ubuntu.org или packages.debian.org), делаешь:

# apt-get build-dep nazvaine
$ mkdir nazvanie && cd nazvanie

Туда кладёшь файлы.

$ dpkg-source -x nazvanie.dsc
$ cd nazvanie-7.0.4
$ fakeroot ./debian/rules binary

Первая команда устанавливает зависимости для сборки (проверь, стоит ли галочка «Source» в списке репозиториев, она для этого и нужна). Готовый пакет устанавливается командой:

# dpkg -i nazvanie.deb

либо:

# dpkg -i *.deb
ZenitharChampion ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.