How to run old version of racket and raco

I want to run some old code of mine that needs some racket version 7.7 code and relies on a bunch of packages. I am on Ubuntu and the current version I have is 8.5.

First, should I still be able to run the old versions of Racket? All the old packages that I installed are still around in .racket/<version>/. I couldn't find an old racket binary (probably got removed on update), so I am using raco cross --version 7.7 to create it. But then I seem to have to reinstall all the old packages via raco cross --versioni 7.7 pkg install <pkg-name> too, since this binary does not seem to know how to use the old packages that I had installed.

Second, assuming that I got the racket binary set up, what is a good workflow to switch between versions? I came across a racket-user thread mentioning racket-dev-goodies. If I understand correctly, all that does is that it makes the paths easier to handle: instead of typing /home/marc/.racket/raco-cross/<version>/<architecture>/bin/racket, it allows me to type plt "<version>/<architecture>/" && plt-bin r? Or is there another, simpler workflow that people who switch between versions use?

All releases of Racket can be found at: Racket: All Versions .

I would install the older version in a single directory style install (not the "Unix-style" install), and I'm pretty unsophisticated, so I just modify the PATH to have the older version of the binaries be found first.

3 Likes

Huh, this is a lot less complicated than I thought. I now installed it via the Linux install script, installing it into its own directory. Calling the racket function from there works out of the box and knows how to access the packages that I already installed. I did not expect it to do the right thing there, since the version installed via raco cross did not find those other packages.

I am getting one error where it seems like this way of using racket tries to find a package for racket version 8.5, but there may be some other issue going on (it's happening in a dynamic-rerequire, and I am wondering if that's the cause). I'll have to check.

In general, the assumption with racket's package system is that newer versions of packages are compatible with older versions of Racket. If this is not the case, it's possible for the package author to add a "version exception" that indicates which version of the package to use. It's certainly possible that the package you're using has an unexpected problem with an older version, though. Can you share more details?