2011-06-10 27 views
12

Estoy tratando de instalar un paquete (nymphaea como ocurre). Esto depende de una versión anterior de la base que la que tengo. No estoy interesado en degradar mis bibliotecas base, así que me gustaría tratar de ignorar esa dependencia y ver cómo van las cosas.Haskell Cabal: Cómo ignorar las dependencias

¿Hay alguna manera de decirle a él que se pierda una dependencia en particular?

Actualización: Después de editar el archivo cabal, ¿qué hago con él? Cabal no tiene una manera obvia de apuntar a un archivo, ni a ningún lado puedo manualmente poner archivos cabal, por lo que puedo ver.

[según abajo, al parecer, yo debería invocar cabal install en un directorio que contiene el archivo de Cabal editado]

Actualización 2: Por desgracia, cábala me da un error extraño en versiones de paquetes siendo requeridos que me parecen tener:

$ 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 

Respuesta

6

Para dar seguimiento a las observaciones sobre la respuesta de don:

En primer lugar, agarrar el paquete de Hackage.

$ cabal unpack nymphaea 

luego editar el archivo .cabal y cambiar base <= 4.1.0.0 a base > 3 && < 5.

$ cd nymphaea-0.3 
$ vim nymphaea.cabal 

Ahora, intente instalarlo.

$ cabal install 

que tengo que trabajar con este cambio usando Haskell Plataforma 2011.2.0.1 en Ubuntu Natty después de instalar los paquetes de Debian requeridos.

+0

Gracias - sin embargo, para mí, todavía no funciona debido a otro error críptico (aparentemente el tiempo no se construirá porque depende de los paquetes que parece que ya tengo?!?) – Marcin

+1

@Marcin: Difícil de ver sin ver el mensaje de error, pero la mayoría de las veces dichos errores son causados ​​por paquetes que no son de Haskell, o que el compilador no puede encontrarlos. Tuve que instalar 'libglade2-dev', pero también podría haber otras dependencias que ya tenía instaladas. – hammar

+0

Si lo desea, vea mi actualización anterior (¡gracias!). – Marcin

4

Debe editar el archivo .cabal asociado con el paquete y eliminar las restricciones en la base que ve. Cambiar, por ejemplo,

base < 3 

a

base >= 3 && < 5 

y ver si se compila. Si funciona, podrías cambiar la versión y avisar al responsable. Si no responden, puede cargar la versión fija en Hackage usted mismo.

+0

Esta es la línea real de nymphaea.cabal: 'build-depends: base <= 4.1.0.0, random, containers, mtl, parsec, glib, gtk> = 0.10.0, glade, cairo' –

+0

Sí, eso es simplemente está mal, ya que depende de revoluciones menores. Pruebe 'base> 3 && <5' –

+0

¿Qué pasa? Es un copiar y pegar del archivo real incluido cuando lo descarga. –

Cuestiones relacionadas