Happstack Lite psuje mi się, ponieważ dostaje blaze-html w wersji 0.5 i chce wersji 0.4. Cabal mówi, że zainstalowane są obie wersje 0.4.3.4 i 0.5.0.0. Chcę usunąć 0.5.0.0 i używać tylko starszej wersji. Ale Cabal nie ma polecenia „odinstalowania”, a kiedy próbuję ghc-pkg unregister --force blaze-html
, ghc-pkg
mówi , że moje polecenie zostało zignorowane.
Co ja robię?
UPDATE : Nie wierz w to . Chociaż ghc-pkg
twierdzi, że ignoruje polecenie, polecenie nie jest ignorowane. Dzięki zaakceptowanej odpowiedzi Dona Stewarta możesz usunąć dokładnie tę wersję, którą chcesz wyeliminować.
ghc-pkg list blaze-html
? Czy na pewno używasz go jako właściwy użytkownik? Może wyraźnie wskaż wersję, która ma zostać wyrejestrowana?ghc-pkg
okłamałeś !cabal-uninstall
z odpowiedzią poniżej ? Czy Cabal-Delete jest potężniejszy? Czy może działać z piaskownicą Cabal (będziecabal exec -- cabal-delete
działać poprawnie i usuwać pakiety z piaskownicy)? Dlaczego nie uczynić tego również odpowiedzią? Wygląda na fajne narzędzie.Odpowiedzi:
Możesz
ghc-pkg unregister
konkretną wersję, na przykład:To powinno wystarczyć.
źródło
~/.cabal/
folderu, aby znaleźć informacje o tym, gdzie znajdują sięJeśli jesteś poza piaskownicą:
Jeśli jesteś w kabalowej piaskownicy :
Pierwszy
--
to separator argumentów dlahc-pkg
. Działa toghc-pkg
w sposób świadomy piaskownicy.źródło
Istnieje również pakiet cabal-uninstall , który zawiera
cabal-uninstall
polecenie. Wyrejestrowuje pakiet i usuwa folder. Warto jednak wspomnieć, że przechodzi--force
do,ghc-pkg unregister
więc może zepsuć inne pakiety.źródło
cabal uninstall
wyniki wcabal: unrecognised command: uninstall (try --help)
Oto skrypt powłoki, którego używam do odinstalowania pakietu. Obsługuje wiele zainstalowanych wersji GHC, a także usuwa odpowiednie pliki (ale jest dostarczany bez gwarancji, nie obwiniaj mnie, jeśli wykonasz instalację!)
#!/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
źródło