What's the best workaround for not having "cabal upgrade"?

gatoatigrado picture gatoatigrado · Aug 2, 2011 · Viewed 10k times · Source

I want to upgrade all packages, not just a specific one with cabal install --upgrade-dependencies.

Answer

acfoltzer picture acfoltzer · Aug 2, 2011

This bit of shell hackery works for me on OS X:

cabal list --simple-output --installed | awk '{print $1}' | uniq | xargs -I {} cabal install {} --reinstall

EDIT: Now forces a reinstall, and avoids installing a package more than once when more than one version is present. Thanks for the comments!

EDIT YEARS LATER: Now that Cabal sandboxes and Stack exist, I strongly recommend against trying to upgrade packages in place. You'll end up with far fewer headaches if you instead can just wipe out an existing sandbox and reinstall up-to-date dependencies.