Need advice about Homebrew installation on i686

Hi, I am hoping to get Homebrew installed on my ageing personal laptop (i686) which is running an ancient Xubuntu (14.04).

My larger goal is to explore the possibility of updating the formula for Maxima. I am a developer and project admin for Maxima (http://maxima.sourceforge.net) and I also use Maxima and Homebrew at work on MacOS. Recently others have noted that the documentation in the existing Maxima version for Homebrew (5.43.0) is missing, so I have tried to fix the problem in Maxima, and I’ve created a new subminor version 5.43.1 with the proposed fix.

I could wait until the new package gets picked up by the kind soul who created the existing formula, but I am also interested in learning about Homebrew, so I am hoping to figure out how to make use of the formula-bump feature.

So, with that preamble, I have made some progress getting Homebrew up and running but I’m not there yet. brew update and brew install rlwrap yield errors about “can’t modify a frozen String”. Some searching seems to show that others have run into “frozen String” errors but I haven’t been able to find any resolution. Any advice on this point would be greatly appreciated.

Here are the steps I’ve tried and the outcomes I got:

  • git clone <Homebrew URL>

  • PATH=path/to/brew/bin:$PATH

  • download ruby tarball (2.7.0), ./configure && make && sudo make install

  • HOMEBREW_DEVELOPER=1 HOMEBREW_RUBY_PATH=/usr/local/bin/ruby brew update-reset seems to be successful

  • HOMEBREW_DEVELOPER=1 HOMEBREW_RUBY_PATH=/usr/local/bin/ruby brew style seems to be successful

  • HOMEBREW_DEVELOPER=1 HOMEBREW_RUBY_PATH=/usr/local/bin/ruby brew list seems to be successful (empty list)

  • HOMEBREW_DEVELOPER=1 HOMEBREW_RUBY_PATH=/usr/local/bin/ruby brew install rlwrap yields large number of Failed to import: <some package> with can't modify frozen String: <some string> where <some string> is usually "JavaRequirement" or "ArchRequirement" or something like that

  • HOMEBREW_DEVELOPER=1 HOMEBREW_RUBY_PATH=/usr/local/bin/ruby brew update yields can't modify frozen String: "Formulary::FormulaNamespace1b05853e91a245f08ba61b324c2995e1::BrewedGlibcNotOlderRequirement" and also Cannot find a vendored version of ruby for your i686 which is unexpected because the Ruby path is set, and that error does not occur in the other brew commands I tried.

  • HOMEBREW_DEVELOPER=1 HOMEBREW_RUBY_PATH=/usr/local/bin/ruby brew update --verbose --debug doesn’t show a stack trace for the frozen string error but it does show why the vendored version error reappears, which is that HOMEBREW_RUBY_PATH is unset before executing brew update-report which then complains.

I can post the output from brew update --verbose --debug if there is interest. For the record, I don’t see any stack traces in that output, so it doesn’t seem to shed light on exactly where the frozen string error is coming from.

Thanks for your help, I appreciate it very much.

Robert Dodier

Hi, Robert. Running Homebrew on i686 (32-bit Intel) isn’t supported. As we’re volunteers, we have limited time, and 32-bit Intel is no longer popular platform. If you have access to either a 64-bit Intel Linux machine or a macOS machine, I’d suggest working on Homebrew development on one of those machines. Sorry that I couldn’t be of more help.

Hi Shaun, thanks for your reply. Yes, I fully understand that i686 is unsupported, I should have said so. Even if it requires some tinkering on my part, I’ll be happy to do what’s necessary to get it working, as I do have some experience with Ruby.

I guess at this point I’m hoping someone can say what the frozen string error is about – I can follow up with some patches or whatever it takes to get stuff working.

All the best,
Robert Dodier

I’d start by building the same version of Ruby (2.6.3) that we use for Homebrew to eliminate that possible variable. See https://github.com/Homebrew/homebrew-portable-ruby/blob/master/Formula/portable-ruby.rb

Instead of running brew update, try running brew update-reset, which runs in bash rather than ruby.