It would be helpful if you could paste the output of cargo --verbose build, which cargo, which rustc, cargo --version and rustc --version to provide some more information exactly what commands are being run and what version they are.
Normally just the rustup.sh script should be sufficient, like the book says, so there’s probably something on your system left over from the old installation that’s causing problems; the output of the above commands should help narrow down what that might be.
Another alternative is to use rustup.rs, a new version of rustup that’s written in Rust, provides many more features like managing multiple versions at once, and installs everything in your home directory rather than system-wide. It’s still in beta, so it’s not yet the officially recommended way of installing Rust, but it likely will replace rustup.sh at some point.