Yah. As evidenced by what happened to the symlinks, though, this
isn't exactly what you wanted to do. Checking the man page quickly, -a is
equivalent to -dpR; the -d part is "no-dereference", which'll copy
symbolic links as symbolic links rather than as the files they point to.
The latter isn't really what you want either, though. Particularly
with /usr/X11R6/lib/X11/xinit, which is a symlink to a directory. :) The
really funny thing is I just tested that 'tar' construction and it doesn't
do the right thing either; it does the same thing that cp -a does.
Hmmm... these back-pointing links are probably worth bringing to
the attention of the XFree86 people - perhaps it'd also be worth bringing
it to the attention of the Free Software Foundation? We could ask them to
add a switch to cp that'll do the right thing if a back-pointing link
doesn't lead where it used to.
As for fixing things - it's probably easiest to fix each link by
hand; on my system, at least, there were only 5 or 6 links that wouldn't
have pointed to the right place any more. Though it would certainly be
possible to write a shell script that automated it.
Matt