una smart puedo preinstaladas open juegos instale fabrica desinstalar desinstalador como borrar app aplicaciones haskell ghc cabal

haskell - smart - desinstalar juegos



¿Cómo puedo desinstalar una versión de un paquete Cabal? (4)

Aquí hay un script de shell que uso para desinstalar un paquete. Admite múltiples versiones instaladas de GHC y también limpia los archivos relevantes (pero se proporciona sin garantía, ¡no me culpe si manipula su 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

Happstack Lite me está rompiendo porque está obteniendo la versión 0.5 de blaze-html y quiere la versión 0.4. Cabal dice que ambas versiones 0.4.3.4 y 0.5.0.0 están instaladas. Quiero eliminar el 0.5.0.0 y usar solo la versión anterior. Pero cabal no tiene un comando de "desinstalación", y cuando intento ghc-pkg unregister --force blaze-html , ghc-pkg dice que mi comando ha sido ignorado.

¿Qué debo hacer?

ACTUALIZACIÓN : No lo crean Aunque ghc-pkg dice que ignora el comando, el comando no se ignora. Y con la respuesta aceptada de Don Stewart puede eliminar exactamente la versión que desea eliminar.


Puede ghc-pkg unregister una versión específica, así:

$ ghc-pkg unregister --force regex-compat-0.95.1

Eso debería ser suficiente.


Si estás fuera de una caja de arena:

ghc-pkg unregister --force regex-compat-0.95.1

Si estás dentro de una arena de cabal :

cabal sandbox hc-pkg -- unregister attoparsec --force

El primero -- es el separador de argumentos para hc-pkg . Esto ejecuta ghc-pkg .


También está el paquete cabal-uninstall que proporciona un comando cabal-uninstall . Desregistra el paquete y elimina la carpeta. Sin embargo, vale la pena mencionar que pasa --force a ghc-pkg unregister por lo que puede romper otros paquetes.