3

Fix: eventmachine gem failed to build on macOS Ventura with Ruby 2.7.6

 1 year ago
source link: https://www.jessesquires.com/blog/2023/01/18/eventmachine-failure-on-macos-ventura/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Fix: eventmachine gem failed to build on macOS Ventura with Ruby 2.7.6

18 January 2023

After upgrading to macOS Ventura, I decided to upgrade my Ruby version and ran into issues trying to build my site locally.

As I’ve written before, I use Jekyll to build this site and I host with NearlyFreeSpeech. I was upgrading to Ruby 2.7.6, which I realize is old and near its end of life. However, this is the version installed on NearlyFreeSpeech and I need my local environment to match that. Because of how NearlyFreeSpeech operates, I cannot upgrade Ruby on my server on my own. Instead, I must wait for the sysadmins to perform upgrades. It’s not ideal, but I rarely have issues. Overall their service is stable and inexpensive, so I have no complaints.

Anyway, installing a new version of Ruby on my Mac meant I needed to perform a fresh bundle install, and that’s where the trouble started. Most of the time this “just works” because I’m diligent about staying up-to-date. However, my bundle install failed with the following error:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /usr/local/var/rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/eventmachine-1.2.7/ext
/usr/local/var/rbenv/versions/2.7.6/bin/ruby -I /usr/local/var/rbenv/versions/2.7.6/lib/ruby/site_ruby/2.7.0 extconf.rb

[....]

An error occurred while installing eventmachine (1.2.7), and Bundler cannot continue.

In Gemfile:
  jekyll-archives was resolved to 2.2.1, which depends on
    jekyll was resolved to 4.3.1, which depends on
      em-websocket was resolved to 0.5.3, which depends on
        eventmachine

A transitive dependency from Jekyll, eventmachine 1.2.7, failed to install because it could not build native extensions. These problems are no fun to debug, especially because I am not a Ruby expert. Luckily, after some searching online, I found a solution here. If you also run into this problem, you need to install eventmachine with the following flags:

gem install eventmachine -v '1.2.7' -- --with-ldflags="-Wl,-undefined,dynamic_lookup"

After this, bundle install succeeded!


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK