Hi Christopher, In brief, MacPorts’ “port select” command is working fine at the command-line in Catalina… but the problem is with installing ANY version of ruby, not switching between multiple versions of ruby that are already installed.
In a machine where no MacPorts Ruby is installed, the command “sudo port install ruby27” is not working fully. The package gets installed, but the links /opt/local/bin/ruby -> /opt/local/bin/ruby2.7 and /opt/local/bin/gem -> /opt/local/bin/gem2.7 do not get created automatically. So after installing I always get Apple’s Ruby from /usr/bin when I use a “ruby” or “gem” command. Of course I can use “sudo port select” to fix that, and I have done, but it took me several days of frustration and messing around before I discovered that fact. I think this is because the port file named “ruby_select”, on which each Ruby port depends, is broken. You can see this port file’s contents using: cat $(port file ruby_select) Compare them to the perl and python “select” files: cat $(port file perl_select) cat $(port file python_select) and I hope you (or someone) will see what the problem is. Cheers, Ian Wadham. > On 4 Oct 2021, at 1:12 am, Christopher Nielsen <masc...@rochester.rr.com> > wrote: > >> The ruby_select portile just has: >> >> destroot { >> select::install ruby ${filespath}/base >> select::install ruby ${filespath}/none >> } >> >> which does not redirect the commands “ruby” or “gem” to the appropriate >> version when you have installed the port “ruby27” for example. Instead, >> “which ruby” or “which gem” always finds the Apple version of Ruby, which is >> now deprecated according to the Catalina Release Notes… > > Hmmm, it’s working fine for me. > > Starting from the default case, where nothing has been selected yet: > > $ ll $(which ruby) > -r-xr-xr-x 1 root wheel restricted,compressed 51K Jul 9 18:40:13 2020 > /usr/bin/ruby > $ ll $(which gem) > -r-xr-xr-x 1 root wheel restricted,compressed 596B Jul 15 17:58:00 2017 > /usr/bin/gem > > After selecting ruby30: > > $ sudo port select ruby ruby30 > Selecting 'ruby30' for 'ruby' succeeded. 'ruby30' is now active. > $ ll $(which ruby) > lrwxr-xr-x 1 root admin - 22B Oct 3 09:54:35 2021 /opt/local/bin/ruby > -> /opt/local/bin/ruby3.0 > $ ll $(which gem) > lrwxr-xr-x 1 root admin - 21B Oct 3 09:54:35 2021 /opt/local/bin/gem -> > /opt/local/bin/gem3.0 > > After selecting ruby27: > > $ sudo port select ruby ruby27 > Selecting 'ruby27' for 'ruby' succeeded. 'ruby27' is now active. > $ ll $(which ruby) > lrwxr-xr-x 1 root admin - 22B Oct 3 09:55:14 2021 /opt/local/bin/ruby > -> /opt/local/bin/ruby2.7 > $ ll $(which gem) > lrwxr-xr-x 1 root admin - 21B Oct 3 09:55:14 2021 /opt/local/bin/gem -> > /opt/local/bin/gem2.7 > > And finally, after reverting back to no selection: > > $ sudo port select ruby none > Selecting 'none' for 'ruby' succeeded. 'none' is now active. > $ ll $(which ruby) > -r-xr-xr-x 1 root wheel restricted,compressed 51K Jul 9 18:40:13 2020 > /usr/bin/ruby > $ ll $(which gem) > -r-xr-xr-x 1 root wheel restricted,compressed 596B Jul 15 17:58:00 2017 > /usr/bin/gem > > So this isn’t working for you on macOS Catalina…?