Haskell Cabal: Как игнорировать зависимости - PullRequest
12 голосов
/ 11 июня 2011

Я пытаюсь установить пакет (nymphaea, как это происходит).Это зависит от более ранней версии базы, чем у меня.Я не заинтересован в понижении своих базовых библиотек, поэтому я хотел бы попытаться просто проигнорировать эту зависимость и посмотреть, как все будет.

Есть ли способ сказать, что Cabal пропускает определенную зависимость?

Обновление: что мне с ним делать после редактирования файла cabal?У Cabal нет очевидного способа указать его на файл, и нигде я не могу вручную помещать файлы cabal, насколько я могу судить.

[Как показано ниже, очевидно, я должен просто вызвать cabal installв каталоге, содержащем отредактированный файл cabal]

Обновление 2: К сожалению, cabal выдает мне странную ошибку о том, что требуются версии пакетов, которые, как мне кажется, имеют:

$ cabal install -v --upgrade-dependencies time
Reading available packages...
Resolving dependencies...
In order, the following would be installed:
time-1.2.0.5 (new version)
Extracting
C:\Users\Marcin\AppData\Roaming\cabal\packages\hackage.haskell.org\time\1.2.0.5\time-1.2.0.5.tar.gz
to C:\Users\Marcin\time-1.2.0.54736...
Creating C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\dist\setup (and its
parents)
C:\Program Files (x86)\Haskell Platform\2011.2.0.1\bin\ghc.exe --make C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\Setu
p.hs -o C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\dist\setup\setup.exe -odir C:\Users\Marcin\time-1.2.0.54736\time-1
.2.0.5\dist\setup -hidir C:\Users\Marcin\time-1.2.0.54736\time-1.2.0.5\dist\setup -i -iC:\Users\Marcin\time-1.2.0.54736\
time-1.2.0.5 -package Cabal-1.10.1.0
<command line>: cannot satisfy -package Cabal-1.10.1.0:
    Cabal-1.10.1.0-55f781465ee9f32289755ad706c71f0f is unusable due to missing or recursive dependencies:
      directory-1.1.0.0-3a2367d72569467a8af8a231656ff1b8 process-1.0.1.5-b3dded8e54a2e13d22af410bdcfafff4
    (use -v for more information)
World file is already up to date.
cabal.exe: Error: some packages failed to install:
time-1.2.0.5 failed during the configure step. The exception was:
ExitFailure 1

Ответы [ 2 ]

7 голосов
/ 11 июня 2011

Чтобы прокомментировать комментарии к ответу Дона:

Сначала возьмите пакет из Hackage.

$ cabal unpack nymphaea

Затем отредактируйте файл .cabal и измените base <= 4.1.0.0 на base > 3 && < 5.

$ cd nymphaea-0.3
$ vim nymphaea.cabal

Теперь попробуйте установить его.

$ cabal install

Я получил его для работы с этим изменением, используя Haskell Platform 2011.2.0.1 в Ubuntu Natty после установки необходимых пакетов Debian.

4 голосов
/ 11 июня 2011

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

base < 3

на

base >= 3 && < 5

и посмотрите, скомпилируется ли он.Если это работает, вы можете изменить версию и сообщить об этом сопровождающему.Если они не отвечают, вы можете загрузить исправленную версию в Hackage самостоятельно.

...