2011-06-30 9 views
6

Así que estoy tratando de instalar un paquete con un gran conjunto de dependencias desordenadas (gitit, en este caso). Un cabal install directa de las fuerzas hackage reconstrucciones de la abundancia de las bibliotecas no quiero reconstruir (que tienen que ver con las limitaciones en text, limitaciones en network, limitaciones en parsec, etc.) que hice lo correcto, corrió cabal unpack gitit, editado manualmente el archivo .cabal, y lo puso exitosamente en un ciclo cabal configure, cabal build. Hasta aquí todo bien.¿Cómo desactivo la comprobación de dependencia con una instalación local de cabal?

Ahora, quiero ejecutar un cabal install. En los viejos tiempos (el año pasado), esto simplemente instalaría los archivos binarios y archivos ya construidos a los que pertenecen. Sin embargo, ahora, ejecutando cabal install ejecuta el comprobador de dependencias, que decide que todos los paquetes que estoy construyendo no usan el mismo parsec, etc., e intenta reinstalarlos de todos modos! Aunque solo ejecuté perfectamente cabal build. ¿Cuál es la bandera mágica para apagar esto y obtener el comportamiento viejo, no inteligente y perfectamente aceptable?

Respuesta

4

En cuanto a las banderas, no parece haber ninguna indicación de cabal install haciendo esto. En tiempos pasados, antes de cabal install y cuando tenía que obtener manualmente sus propios paquetes, el conjuro en la etapa de instalación era runghc Setup install --user después de ejecutar runghc Setup configure --prefix=$FOO --user - ¿Quizás esto funcione? Setup.hs no invocará automáticamente 'compilar' cuando diga 'instalar', si mi memoria funciona correctamente.

Ahora, para el futuro, si quiere evitar esta desagradable dependencia, le sugiero que use cabal-dev, que guardará las instalaciones de su paquete y nunca tocará su base de datos de usuario/paquete global, en este caso ' acaba de hacer d:

$ cabal unpack gitit 
$ cd gitit-0.8.0.1 # latest hackage version 
$ cabal-dev install 

va a descargar e instalar correctamente todas las dependencias necesarias como Cabal instalar, sino que va a caja de arena mediante la creación de un directorio que contiene una base de datos ./cabal-dev paquete autónomo. Nunca toca su paquete global o usuario db en ~/.ghc/. cabal-dev efectivamente hace la edición de archivos de cabal y lidiando con los problemas de dependencia de diamantes. Cabal se enfrenta al pasado, la forma en que cabal-install hizo que descargar paquetes manualmente sea cosa del pasado.

+1

Sí, el uso de la secuencia de comandos de configuración directamente hizo el truco. Increíble lo rápido que me olvidé de esos días de antaño hace dos años :-) – sclv

2

También resulta que hay un indicador --only que permite construir e instalar solo ese paquete, al igual que la ruta ./Setup.

Cuestiones relacionadas