Okay, so the problem is with cabal-install.
I'd don't verily need ghc 7.2, I think I'll just stick to 7.0.4 unti cabal-install is updated, it will be simpler.

2011/10/24 Daniel Fischer <daniel.is.fischer@googlemail.com>
On Monday 24 October 2011, 23:13:32, Yves Parčs wrote:
> I'm using GHC 7.2.1 and cabal-install 0.8 (Cabal 1.8.0.2), and when
> "cabal install rsa"

>
> Apparently it's an instance being declared twice.
> However RSA hackage page states that it compiles under GHC 7.2:
> http://hackage.haskell.org/package/RSA

The instance in the rsa package is guarded by a Cabal MIN_VERSION macro:

#if !MIN_VERSION_random(1,0,1)
instance Random Word8 where
 randomR (a,b) g = let aI::Int = fromIntegral a
                       bI::Int = fromIntegral b
                       (x, g') = randomR (aI, bI) g
                   in (fromIntegral x, g')
 random          = randomR (minBound, maxBound)
#endif

Unfortunately, that macro was broken in some Cabal versions, among them
1.8.0.2, so the negated check goes wrong (#if !(MIN_...) would work).
[As a quickfix for this package, you could edit the source, but you'll
probably come across more macro problems later.]

Build yourself a new cabal-install.
If you use 7.2.1 for that, the recipe at https://gist.github.com/1169332
tells you what you have to change.
If you have an older ghc still available, the vanilla procedure should work
with that (if you're using the old 6.12.* with the Cabal-1.8.0.2, first
install a later Cabal version, 1.8.0.6 works).