¿He actualizado mi cabal-install?


Acabo de instalar Haskell desde es el sitio oficial . Después de eso, siguiendo su tutorial de inicio rápido.

Corro:

cabal update

Que muestra este mensaje:

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

Corro:

cabal install cabal-install

Y compruebe si la actualización se realizó correctamente con

cabal update

El resultado, me muestra el mismo mensaje desde el principio:

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

Entonces, ¿actualizé la instalación de la cábala o no? ¿Cómo compruebo la versión de mi cabal?

Importante: Estoy usando el 64 versión de bits para Mac OS X.

Author: MasterMastic, 2013-02-17

9 answers

Tuve un problema similar después de instalar la plataforma Haskell 2012.4.0.0 en OSX. Cuando corrí cabal install cabal-install, terminó con:

cabal: ../ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal: does not exist

Así que supuse que tenía sus caminos mezclados en alguna parte. Sin embargo, el ejecutable fue realmente construido con éxito (comprobar para ~/Library/Haskell/ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal) y acabo de copiarlo desde allí a ~/Library/Haskell/bin que está en mi camino.

A partir de entonces todo funcionó bien:

$ which cabal
/Users/luke/Library/Haskell/bin/cabal
$ cabal update
Downloading the latest package list from hackage.haskell.org
$ cabal --version
cabal-install version 1.16.0.2
using version 1.16.0.3 of the Cabal library
 18
Author: Shaun the Sheep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-19 01:28:15

En mi caso (y probablemente otros?) cabal se instala inicialmente en /usr/local/bin por homebrew al instalar haskell-platform. Al actualizar cabal, la versión se instala en $HOME/.cabal/bin/cabal. Usted debe colocar sus contenedores de la cábala más alto en su $PATH, así:

export PATH=$HOME/.cabal/bin:$PATH
 26
Author: Charles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-15 18:28:35

Todo el mundo parece experimentar un problema ligeramente diferente aquí. En mi caso, cabal fue construido con éxito e instalado en ~/Library/Haskell/bin.

Como se indica en ~/.cabal/config, agregar ~/Library/Haskell/bin a PATH resolvió el problema.

Abajo está la descripción en ~/.cabal/config:

-- === Built executables will be installed in:
--     ~/Library/Haskell/bin
--
-- You may wish to place this on your PATH by adding the following
-- line to your ~/.bash_profile:
--     export PATH="$HOME/Library/Haskell/bin:$PATH"
 12
Author: stackless,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-01 23:02:06

En OS X 10.8 tuve que añadir /Library/Haskell/bin a mi RUTA (ponerla antes de /usr/bin). Añadiendo que se ha corregido el mensaje de error

 10
Author: Jay Dorsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-18 02:32:13

cabal --version te da la versión de la cábala que estás ejecutando. Si quieres ver la versión de cabal-install que tienes, ejecuta cabal info cabal-install y mira la línea versions installed.

Para mí en OS X, versiones instaladas es [unknown], después de ejecutar cabal install cabal-install, lo cual no es genial.

 3
Author: Chris Barrett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-17 05:34:57

Yo también tuve este problema.

Después de ejecutar which cabal, encontré que estaba usando /usr/bin/cabal. Eliminar esto resolvió el problema.

 3
Author: Matthew H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-19 22:14:07

Parece que cabal por defecto instala paquetes localmente para el usuario actual y por lo tanto no será parte de la RUTA. Mira el Cabal documentation específicamente paso 1.2.1 donde puede cambiar la configuración para instalar cosas globalmente por defecto (no recomendado).

La forma en que instalé cabal fue cabal --global install cabal-install pero todavía tenía problemas con la ruta que, desde la instalación predeterminada de Haskell, pone la ruta en este orden C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files\Haskell Platform\2013.2.0.0\bin; donde la primera ruta tiene prioridad sobre el segundo. Con la bandera cab global cabal instalado el binario a C:\Program Files\Haskell\bin que no está en mi ruta, pero debe ser añadido antes de la ruta C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin.

Tomado de la documentación

Debes poner a la cábala.exe en un directorio que está en su % PATH%, por ejemplo C:\Program Files \ Haskell \ bin.

 1
Author: Har,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-12 08:43:23

En mi caso, se requirió una combinación de varias respuestas para superar este problema. Intentaré proporcionar una solución más completa en una respuesta para cualquier otra persona en mi situación.

  • Para empezar, ejecutar which cabal me mostró que /usr/bin/cabal se estaba cargando, que era un enlace simbólico a /Library/Haskell/ghc-7.8.3-x86_64/bin/cabal. Creo que se estaban instalando versiones más nuevas de cabal, pero este camino era específico para una sola versión, por lo que fueron ignorados. Agregar /Library/Haskell/bin al frente de mi $PATH remedió eso situación.
  • En segundo lugar, y lo más importante, las nuevas versiones de cabal-install se estaban instalando en mi caja de arena cabal en lugar de la ubicación del sistema. No vi ninguna otra respuesta que sugiriera esto, pero después de un poco de monkeying alrededor encontré que moverse fuera del directorio de mi aplicación permitió cabal instalar realmente en el sistema.
  • Finalmente, al agregar la bandera --global al comando se solucionó el problema. Mi orden final fue cabal install --global cabal-install. Después de esto, finalmente pude actualizar correctamente.

TL;DR: si usa sandboxes de cabal, salga del directorio de su proyecto y ejecute cabal install --global cabal-install. También, compruebe su variable $PATH como otros han sugerido.

 1
Author: MacKinley Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-25 18:16:00

En mi caso la nueva versión de cabal se estaba instalando en el .cabal-sandbox del proyecto en el que estaba.

Por ejemplo, comprobando la versión:

./.cabal-sandbox/bin/cabal --version

, Así que necesitaba actualizarlo fuera de eso. Esto fue en OSX.

 0
Author: ericdwhite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-15 15:56:05