Pregunta

Entonces, este es un problema personal, pero tal vez la gente tenga buenos consejos o soluciones.

El problema se trata de instalar Cabal Install y Haskell-Platform bajo Debian.

Cuando usted apt-get install haskell-platform, se envía con cabal-install, y su comando cabal está disponible.

Ahora esto cabal-install no está actualizado:

> which cabal
/usr/bin/cabal
> /usr/bin/cabal --version
cabal-install version 0.8.0
using version 1.8.0.2 of the Cabal library

Pero mi comprensión de correr cabal update es que actualiza Cabal, pero como no es una "cosa de Debian", lo pone en ~/.cabal/bin/.

> ~/.cabal/bin/cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Ahora mi sistema tiene 2 cabals y el que obtengo escribiendo cabal no es el que quiero usar ... porque seguirá actualizando al otro en lugar de sí mismo, y por lo tanto no es efectivo.

Entonces, lo que hice fue alias en mi ~/.bashrc:

alias cabal='~/.cabal/bin/cabal'

Ahora:

> cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Entonces, mis preguntas finales:

  • ¿Hay un repositorio de DEB que tenga Cabal 0.8.2?
  • ¿Podría mi solución actual conducir a problemas? (Por ejemplo, which cabal todavía apunta a mi inútil /usr/bin/cabal, así que si los scripts usan este comando, serán engañados ...)
  • ¿A alguien se le ocurrió una mejor solución? (El mío es un poco ad-hoc, pero eso es todo lo que pude llegar con mi mal conocimiento de lo que está sucediendo detrás de escena ...)
  • Por favor, corrígeme si algo que digo arriba es incorrecto o inexacto.
¿Fue útil?

Solución

Lo que hago es instalar Cabal con el --global bandera. Esto instalará Cabal en /usr/local/bin/cabal, por lo tanto, siempre superará a los paquetes Debian Cabal.

Otra forma es evitar generalmente los paquetes de Debian e instalar la plataforma Haskell directamente desde su fuente. Este enfoque también es mejor, si siempre desea tener las últimas versiones de los Libs de Haskell.

Otros consejos

Mantengo mi usuario local $HOME/.cabal/bin en el frente del PATH. Yo solo instalo ghc6, ghc6-prof, ghc6-doc y cabal-install de los paquetes de distribución. No uso distribución cabal-install para cualquier cosa más que arrancar el nuevo ~/.cabal. Todo el resto que instalo con cabal install, incluido el más nuevo cabal sí mismo.

Cuando quiero usar GHC más nuevo, lo implemento en /usr/local/stow/ghcVERSION, y habilitarlo con gnu stow (agrega enlaces simbólicos en /usr/local que, nuevamente, tiene precedencia en mi PATH). Cuando quiero volver a la distribución GHC, acabo de ejecutar stow -D Para eliminar todos los enlaces simbólicos.

Considero usar cabal-dev tener instalaciones de Cabal específicas del proyecto y evitar dependencias rotas que ocurren con cabal de vez en cuando.

De hecho, no uso la plataforma Haskell en absoluto porque no necesito todo y me resulta más fácil poder instalar bibliotecas individuales. No instalo bibliotecas de distribución, porque no todas están disponibles o son exactamente las versiones que necesito; y es mucho más fácil controlar los conflictos si todos están instalados en el mismo lugar (~/.cabal en mi caso). No instalo nada con --global, porque creo que es incorrecto y difícil de revertir.

Por supuesto, esta información se desactualiza, pero sí, Debian inestable y las pruebas tienen, al momento de escribir, Cabal Install 0.10.2.

En general, el empaque de Debian de las cosas de Haskell está dirigida a los usuarios que desean un conjunto de paquetes que se sabe que trabajan juntos, es decir, sin dependencia del infierno, a expensas de no tener lo más último y mejor. Esto incluye instalación de cabal. Utilizo la instalación de cabal de los repositorios, y solo para instalar las bibliotecas que aún no han sido empaquetadas para Debian.

Descargo de responsabilidad: soy uno de los tipos que crean esos paquetes para Debian.

En Ubuntu también tiendo a instalar GHC a través de Stow, ignorando los paquetes del sistema por completo.

Un ligero giro del enfoque de Jetxee es que instalo la plataforma Haskell (desde la fuente), lo que lo agrupa con el directorio GHC Stow. Supongo que debería llamar a los caminos /usr/local/stow/haskell-platform-VERSION, pero tiendo a usar /usr/local/stow/ghc-VERSION en cambio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top