[racket] Worried about the new package manager not storing each version of a package
Sam Tobin-Hochstadt writes:
> I think the right approach to running multiple Racket applications
> at once that all rely on packages that might conflict is to use
> multiple installations of Racket. Then you can install packages
> installation-wide and not have them conflict.
>
> This is, I think, quite similar to the way people deploy Ruby
> applications with something like rvm or Python applications with
> pyenv.
Python's virtualenv creates a virtual Python installation that
consists mainly of a bunch of symbolic links to the main installation.
It's quick to set up and takes very little space.
The reason for virtualenv is that there is no convenient way to change
Python's module search path at runtime. Everything is hard-wired into
the installation, except for the use of the PYTHONPATH environment
variable that permits an extension of the search path. However,
PYTHONPATH is very limited because it is shared by all Python
versions. Moreover, there is no way to install a package to an
arbitrary location that one could then place on PYTHONPATH.
Racket's configuration looks a lot more flexible and from what I
understand of how modules are located, the equivalent to a virtual
Python installation is just a collection links file. This would
require some additional tool support to be useful, e.g. for installing
packages into scopes defined in a collection links file.
However, there is little point in having lots of flexibility to handle
multiple versions locally if there is no way to obtain different
versions of a package. If there's a bug in the latest release of
package, users need a way to install the next-to-latest one.
Konrad.