MacPorts, gems and ruby notes
I’ve had a number of issues with my macports, ruby and rails setup after I updated the OS to 12.1. First I want to document some things that helped me to figure out some of my problems.
MACPORTS To list the files in a given port, use contents.
$ port contents installed_port_name
To list all my installed ports
$ port installed
To activate a particular port
$ port activate <portname> @<version>
RUBY To list available versions of a port to install
$ gem list <gemname> -remote
To find out the version of openssl that ruby is using
$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
This last bit is what was causing my issue. I was trying to run a capistrano task to set up the directories for an app and I got this error.
yo:apcases [master]$ cap production setup:directories
00:00 setup:directories
01 /bin/mkdir /local/web/apcases/shared
#<Thread:0x000000010f8cb3c8 /Users/maryh/Software/rubies/3.1.0/lib/ruby/gems/3.1.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
/Users/maryh/Software/rubies/3.1.0/lib/ruby/gems/3.1.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as [email protected]: rsa#set_key= is incompatible with OpenSSL 3.0 (SSHKit::Runner::ExecuteError)
...
lots of other stuff...
After looking at the server to see what was installed, I found that the only place I had openssl3 installed was on my laptop. I had recently updated my laptop to MacOS 12.1 (Monterey) and had to reinstall MacPorts. I also had updated my ruby to 3.1. After a lot of searching, I found that the version of ruby that I was using had openssl3.
be:~ $ ~/Software/rubies/3.1.0/bin/ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 3.0.1 14 Dec 2021
I recompiled ruby with the following config options to fix things.
$ ./configure --prefix=/Users/maryh/Software/rubies/3.1.0-openssl11 --with-openssl-dir=/opt/local/libexec/openssl11
be:~ $ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.1.1l 24 Aug 2021
Then I just needed to install all the required gems and I was back in business.