Honestly this is where a lot of opinion and policy is going to come into play. However the goal is the same. You setup instructions should contain enough information that any idiot can setup the project. That's important, because it's not just people that are used to the tool chain that are going to need to setup the project. There will be, at some random point in the future, someone that has no idea what there doing but has some control over the budget, that will want to "take a look".
So I usually set these goals.
- Use tools to setup the project where ever you can. For example, instead of a list of gems just use rake.
- Make sure setup is "one step". For example
rake setup. Then add the parts to that. So bundle install, rake db:migrate, thing do-what's it, whatever. This isn't always possible as it means rake has to work, so you have a chicken and egg.
- Resolve chicken and egg with instructions to make a chicken. For example, "You must have a sane working environment to setup this project, please see (link to website here) for instructions on how to install (working environment here). Now it's important to keep this "chicken" as simple as possible. So in the Ruby example, instructions to setup ruby, rubygems, rake. Then hand off the process to rake setup.
The reason links are bad is the same reason there bad on Stackexchange. They won't always be there. However this is less of an issue, because you can edit the read me (and should be) frequently. So if someone says the "install ruby instructions" don't work then you can just swap out the link.
The reason big blocks of text are bad is because there just isn't a need. 90% of your "audience" will never look at the read me. Specially if you have
rake setup going. Then know how to setup ruby, ruby-gems and rake, and they don't need your instructions to do so. What they might need is a quick list of odd dependencies. And for that, a list with links to instructions is great.