Install Old Versions of Ports Using MacPorts

MacPorts is my preferred way of installing, managing, and upgrading much of the software I have on my Mac.

I’m setting up a new work machine today and I need to install ruby 1.8.5 on my machine for Rails to be happy.

Unfortunately, you can’t do something simple like specifying the version of the port you want to install unless it’s in a local repository.

Fortunately, my friend Stephen Chu had this problem about a year ago and has a nice procedure on how to do it. I’m going to update it for MacPorts and ruby 1.8.5 here.

1) Find out the svn revision number of the Portfile that has 1.8.5 by looking at:
http://trac.macosforge.org/projects/macports/log/trunk/dports/lang/ruby/Portfile
In my case it is 21127.

2) Set up a local port repository. In the file /opt/local/etc/macports/sources.conf, add this line before the rsync line:
file:///Users/Shared/dports and create that directory.

3) Install the port into your local repository.

cd /Users/Shared/dports && svn co --revision 21127 http://svn.macports.org/repository/macports/trunk/dports/lang/ruby/ lang/ruby/

4) Run portindex so that ports now finds your new (old) version of ruby.

portindex /Users/Shared/dports

5) Now you should be able to see ruby @1.8.5-p12 in addition to @1.8.6 by running:

port list

6) Install Ruby

sudo port install ruby @1.8.5-p12

You should be up and running now, so to check, run:

ruby -v

You will see something like this:

ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.10.1]

Now, if you want versions of ruby that MacPorts doesn’t have (later patchlevels for instance), you can modify the portfiles by hand, but I’ll leave that for another post.

Update: There is an “official” MacPorts HOWTO on installing older versions of ports here. It may be updated in the future, so I’m linking to it here: http://trac.macports.org/wiki/howto/InstallingOlderPort

13 Replies to “Install Old Versions of Ports Using MacPorts”

  1. Not sure if this is necessary for everyone, but in my case, I had to edit /opt/local/etc/macports/sources.conf to include the local repository I just created and indexed, before macports would pick it up:

    file:///path/to/dports

  2. When I tried to use these instructions to install an old version of OpenSSL, macports refused to install the old version even though I specified the version that I had in my local repository. To make it work, I went to /Users/Shared/dports/devel/openssl and then simply did `sudo port install`. If you are in a dport folder and you issue that command it just uses the info in the current directory.

Leave a Reply

Your email address will not be published. Required fields are marked *