Currently, I am using GHC 7.10.1 on my ubuntu 14.04 system, just now I got noticed from mailing list that a new version containing a lot of bug fixes has been released. So I am considering updating my GHC.
I know how to install GHC, however, I have little knowledge about how to deal with packages I have already installed through cabal
. It seems that those packages were installed into ~/.cabal
, for example, libs were installed into ~/.cabal/lib/x86_64-linux-ghc-7.10.1
and registered in ~/.ghc/x86_64-linux-7.10.1
.
The path name(...x86_64-linux-7.10.1...) seems to be suggesting that they could only be used by GHC 7.10.1
, so if I want to use a new version GHC and remove the old ghc 7.10.1
from my system, should I clean them up and reinstall those packages?
for example, should I rm -rf ~/.cabal && rm -rf ~/.ghc
and reinstall both cabal and GHC? or should I just leave those packages there? if so, would those installed packages get reused by the new GHC?
Yes, you need to reinstall the packages when you update the compiler.
However, if you delete ~/.ghc
then that removes the packages from GHC's point of view. You can also delete ~/.cabal
and reinstall everything, but binaries in ~/.cabal/bin
(including cabal
) will usually still work, so often it's easier to keep these and save some time (have a look to see what's there). There might be problems with some - I think some binaries may have the GHC path hard coded internally, so will break, but you can always reinstall them.
~/.cabal/packages
contains cached downloads so it's up to you whether you delete that. The data will just be pulled down again next time your run cabal. If in doubt just delete it.
You should delete ~/.cabal/lib
which contains the compiled packages and won't be compatible with a different GHC. Likewise for ~/.cabal/share
.
Unless you've edited your ~/.cabal/config
file by hand and want to keep the changes you can delete that too and a new one will be created.
You don't need to remove anything. If you install GHC 7.10.2 in the same location that you installed GHC 7.10.1, then all the symlinks ghc
, ghci
, ghc-pkg
etc. will be overwritten to point to 7.10.2, but you can still run the versioned programs ghc-7.10.1
, ghci-7.10.1
, ghc-pkg-7.10.1
, etc., or tell cabal
to build with a specific compiler with the -w
flag. All libraries and library registration information (whether they came with GHC, are installed in the user package database, or are in a sandbox) are (by default) stored under GHC version-specific subdirectories, so different versions of GHC will not interfere with each other.
If you're not running low on disk space I would suggest not removing GHC 7.10.1. After all 7.10.2 was released just yesterday, and if you encounter a strange issue with 7.10.2, it might be worth checking whether 7.10.1 was also affected.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With