85

Happstack Lite は、blaze-html バージョン 0.5 を取得していて、バージョン 0.4 を必要としているため、壊れています。Cabal によると、バージョン 0.4.3.4 と 0.5.0.0 の両方がインストールされています0.5.0.0 を削除して、古いバージョンのみを使用したい。しかし、cabal には「アンインストール」コマンドがなく、試してみるとghc-pkg unregister --force blaze-htmlghc-pkgコマンドが無視されたと表示されます。

私は何をしますか?

更新:信じないでください。コマンドを無視すると主張していますがghc-pkg、コマンド無視されません。Don Stewart の受け入れられた回答を使用すると、削除したいバージョンを正確に削除できます。

4

4 に答える 4

96

ghc-pkg unregister次のように、特定のバージョンを指定できます。

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

それで十分なはずです。

于 2012-05-14T17:06:49.987 に答える
23

サンドボックスの外にいる場合:

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

カバル サンドボックス内にいる場合:

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

1 つ目--は の引数セパレータですhc-pkg。これはghc-pkg、サンドボックス対応の方法で実行されます。

于 2014-06-18T12:22:04.080 に答える
20

コマンドを提供するcabal-uninstallパッケージもありますcabal-uninstall。パッケージの登録を解除し、フォルダを削除します。他のパッケージを壊す可能性があるため、に渡さ--forceれることは言及する価値があります。ghc-pkg unregister

于 2013-01-10T00:02:40.940 に答える
7

これは、パッケージをアンインストールするために使用するシェル スクリプトです。インストールされている GHC の複数のバージョンをサポートし、関連ファイルを消去します (ただし、保証なしで提供されます。

#!/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
于 2012-09-05T20:34:02.340 に答える