Here is a straightforward patch which honours the fact that there are target platforms which do not allow for symlinking.
I personally use this to test my package developments in different OpenACS installations/setups (e.g., HEAD, a specific branch) without cloning the package sources into the "packages" directory (e.g. via a SCM tool) of each and every installation. This is especially useful if the packages under development are not monitored by the same SCM as acs-core is (i.e., CVS) ... so that the SCM tools do not interfere.
For deployments, this might be interesting to share a set of package directories between OpenACS instances.