Mis paquetes cabal son FUBAR; ¿cómo puedo purgarlos y empezar de nuevo?


Me olvidé de habilitar la creación de libs para perfilar en mi ~/.cabal/config antes de instalar un montón de paquetes en una nueva máquina y ahora un --reinstall world para tratar de arreglar la situación ha dejado todo roto (naturalmente).

Creo que es un mejor uso de mi tiempo simplemente purgar todo. ¿Cómo lo hago correctamente?

Author: jberryman, 2012-08-21

2 answers

Cabal no realiza un seguimiento de lo que está instalado, solo usa el mecanismo de biblioteca de ghc (o el de algún otro compilador si no está usando ghc), por lo que puede usar rm -r ~/.ghc para eliminar todas las bibliotecas instaladas localmente.

Si tiene varios ghc instalados, y solo desea eliminar las bibliotecas de un ghc específico, elimine el subdirectorio correspondiente al ghc que desea eliminar.
Por ejemplo, podría eliminar todo lo que he instalado para ghc-7.6.0 con rm -r ~/.ghc/x86_64-linux-7.6.0.20120810
Puedes también use esto para preservar su ghci_history si lo desea.

ll ~/.ghc/
total 24
-rw-r--r-- 1 johnl johnl 2300 Aug 21 11:47 ghci_history
drwxr-xr-x 3 johnl johnl 4096 Jun 17 19:09 x86_64-linux-6.12.3
drwxr-xr-x 3 johnl johnl 4096 May 17 08:17 x86_64-linux-7.2.1
drwxr-xr-x 3 johnl johnl 4096 May 16 17:34 x86_64-linux-7.4.1
drwxr-xr-x 3 johnl johnl 4096 Jun 15 08:21 x86_64-linux-7.4.2
drwxrwxr-x 3 johnl johnl 4096 Aug 15 12:37 x86_64-linux-7.6.0.20120810

Edit: ~/.cabal/world es una lista de paquetes instalados con restricciones de versión especificadas por el usuario. Así que en la mayoría de los casos, incluiría, por ejemplo, mtl -any. Si ha instalado paquetes con versiones específicas, como por ejemplo emitiendo cabal install mtl-2.1.1, registrará esa versión. Debería ser capaz de eliminar el archivo mundial y comenzar de nuevo, o si lo revisa y las dependencias son aceptables, podría intentar simplemente ejecutar cabal install world. O tú podría ignorarlo y no usar el apoyo mundial de la cábala (eso es lo que hago).

 58
Author: John L,
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-02-25 05:48:44

Este script de shell ghc-pkg-reset limpia ambos ~/.ghc/ y ~/.cabal/, un poco más selectivamente. (Y el script ghc-pkg-clean que lo acompaña puede ayudar a recuperarse de una confusa instalación de paquetes, tal vez evitando un reinicio. Me parecen útiles.

 18
Author: Simon Michael,
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
2012-08-29 14:24:19