For example, The problem of handling the distro's package manager (whatever it is) with a language's package is a separate and thorny issue, which I think can't be "perfectly" solved short of unrealistic rewrite-the-world solutions. E.g., what happens if you do apt-get install cabal" and then use cabal to update itself to the newest version? What happens if you then "apt-get upgrade" and there's a newer version than the one apt installed, but it is older than the one you installed manually? etc.