古い Mac で Ruby を 2.4.1 にしようとした話
背景
Mastodon が流行中だ。ソースコードが GitHub で公開されている、 Ruby on Rails を採用しているとのことで私も動かしてみることにした。インスタンスを立てる前に、まずは localhost で動かすことを目指す。
リポジトリを手元に Fork & Clone して bundle install
したところ
「 Ruby2.4.1 を使え。古事記 (.ruby-version) にもそう書かれている」
しまった。 Ruby 自体のバージョンアップなんてそういえば数ヶ月していなかった。まずここから修正する必要がある。
筆者の端末は MacBook Pro (Retina, 13-inch, Late 2013) である。それまで携帯端末向けにしか搭載されていなかった Retina ディスプレイが Mac に採用された最初の機種だ。買った当初は「 Retina なのに大画面!しかも薄い!」と感動していたものだが、時は流れ「年季の入った」と呼んでも差し支えない状態になってしまった。
そんな状態でも手続きを踏めば最新のプログラムを動かすことはできる。こういう時は
とする。途中までは順調に進み、最後の rbenv install 2.4.1
しようとしたところ
BUILD FAILED
何か…コンパイル自体に失敗している…? こうなったらログを読むしかない。どうやら ossl_x509store.c
でコンパイルエラーを起こしている。こういう時は何かしら環境がマズいはず。エラーメッセージでググればどうにかなるだろう。
Sierra にアップデート
エラーメッセージで検索するとこんな記事が出てきた→ 年季が入ったmac(笑)にrbenvでruby 2.4.0をインストールしようとしたらハマったのでメモ - Uyama.coffee
おそらく同じエラー、環境も似通っているので参考になる。記事によると以下の5点を試したところ正常にインストールできたとのこと。
最初のは怖いので Sierra にアップデートを最初に試してみることにした。時間がかかるしネットで遊ぶ分には不自由しないので El Capitan のまま放置していたがいい機会だ。アップデートスクリプトを走らせてその日は就寝。翌朝、初期設定を済ませたあと改めて rbenv install 2.4.1
を実行したところ
BUILD FAILED
Xcode を更新
いや、一発でそんなにうまくいくはずがない。 Xcode は開発環境に加えてC言語関係のバイナリコマンドも付属する。バージョンアップは iTunes Store から行うがこれがまた長い。しかしこれでコンパイラも無事更新されたことだろう。
BUILD FAILED
いや待て、さっきの記事にはもう1個コマンドが紹介されていた。 xcode-select –install
だ。試すとダイアログが出て、いかにも仕事してくれそうな感じだ。よくなったと思いまたコマンドを叩くと
BUILD FAILED
Homebrew を更新
やっぱりねー使うの Homebrew なんだからそっちも更新しないとねー
Homebrew 自体の更新 (brew update
) は直近で行ったので、各 brew の更新を試す。 brew upgrade
の後に brew 名を入力しないと全ての brew が更新される。これもコマンドによっては何年も更新していなかったりしたので一晩レベルで時間がかかるが、その方がよりしっかり効いている実感がある。翌日改めて rbenv install 2.4.1
を実行!
BUILD FAILED
迷走…
正解を求めて様々な資料を調査したが、一つ学んだのは手当たり次第に試すべきでないということ。某所の「この記事は公開から1年以上が経過しています」の表示がある記事の信憑性は非常に低い。英語の記事もしかり。見つかった記事には
など、リスクが高かったり一時的だったりする手法がある。エンジニアには記事の内容が本当に効くか判断できる目が必要である。
ここまでやってダメだったとするとアレしかないか…
brew doctor
実行パスの警告を表示してくれる brew doctor
コマンド。実行すると尋常でない数の警告が表示された。 こんなことになっていたのか… そういえばこの Mac, マシン自体もそんなに新しくない上にデータ自体はそれ以前に使っていた MacBook (2008年購入) を引き継いだので、内部はもっと荒れていたと推測される。
とった対策は大体以下の通り ↓
ちなみにシンボリックリンクと通常のファイルが混在するディレクトリから通常のファイルのみを削除するにはこのワンライナーが使える。
ls -l path/to/delete/* | grep '^l' | awk '{print $NF}' | xargs rm
全部ではないもののある程度警告を潰して改めて rbenv install 2.4.1
を実行!
Successfully installed
😂😂😂😂😂
結論
brew doctor
先生の言うことはちゃんと聞こう。
以上、ボロボロの Mac に最新の開発環境を乗せようとして苦労した話でした。