Happstack Lite se me está rompiendo porque está recibiendo la versión 0.5 de blaze-html y quiere la versión 0.4. Cabal dice que están instaladas ambas versiones 0.4.3.4 y 0.5.0.0. Quiero eliminar 0.5.0.0 y usar solo la versión anterior. Pero Cabal no tiene un comando de "desinstalación", y cuando lo intento ghc-pkg unregister --force blaze-html
, ghc-pkg
dice que mi comando ha sido ignorado.
¿Qué debo hacer?
ACTUALIZACIÓN : No lo crea . Aunque ghc-pkg
afirma ignorar el comando, el comando no se ignora. Y con la respuesta aceptada de Don Stewart, puede eliminar exactamente la versión que desea eliminar.
ghc-pkg list blaze-html
? ¿Está seguro de que lo está ejecutando como el usuario correcto? ¿Quizás indicar explícitamente la versión que no se registrará?ghc-pkg
mintió !cabal-uninstall
mencionado en la respuesta a continuación ? ¿Cabal-delete es más poderoso? ¿Puede funcionar con una caja de arena de cabal (cabal exec -- cabal-delete
funcionará correctamente y eliminará paquetes de la caja de arena)? ¿Por qué no hacer de esto una respuesta también? Parece una buena herramienta.Respuestas:
Puede
ghc-pkg unregister
una versión específica, así:Eso debería ser suficiente.
fuente
~/.cabal/
carpeta para obtener información sobre dónde están los pkgs y los binariosSi está fuera de una caja de arena:
Si estás dentro de una caja de arena de cabal :
El primero
--
es el separador de argumentos parahc-pkg
. Esto se ejecutaghc-pkg
de manera consciente de la zona de pruebas.fuente
También existe el paquete cabal-uninstall que proporciona un
cabal-uninstall
comando. Anula el registro del paquete y elimina la carpeta. Sin embargo, vale la pena mencionar que pasa--force
aghc-pkg unregister
poder romper otros paquetes.fuente
cabal uninstall
resultados encabal: unrecognised command: uninstall (try --help)
Aquí hay un script de shell que uso para desinstalar un paquete. Es compatible con múltiples versiones instaladas de GHC y también borra los archivos relevantes (pero se proporciona sin garantía, ¡no me culpes si mandas tu instalación!)
#!/bin/bash -eu # Usage: ./uninstall.sh [--force | --no-unregister] pkgname-version # if you set VER in the environment to e.g. "-7.0.1" you can use # the ghc-pkg associated with a different GHC version : ${VER:=} if [ "$#" -lt 1 ] then echo "Usage: $0 [--force | --no-unregister] pkgname-version" exit 1 fi if [ "$1" == "--force" ] then force=--force; shift; # passed to ghc-pkg unregister else force= fi if [ "$1" == "--no-unregister" ] then shift # skip unregistering and just delete files else if [ "$(ghc-pkg$VER latest $1)" != "$1" ] then # full version not specified: list options and exit ghc-pkg$VER list $1; exit 1 fi ghc-pkg$VER unregister $force $1 fi # wipe library files rm -rfv -- ~/.cabal/lib/$1/ghc-$(ghc$VER --numeric-version)/ # if the directory is left empty, i.e. not on any other GHC version if rmdir -- ~/.cabal/lib/$1 then rm -rfv -- ~/.cabal/share/{,doc/}$1 # then wipe the shared files as well fi
fuente