ARM版Chromebook Linux環境へのHomebrew導入手順

ARM版Chromebook Linux環境へのHomebrew導入手順
Page content

気軽なモバイルLinux環境

先日購入したARM版のChromebookでは、Crostiniという名のLinux環境 (LXCでの提供) が使えるようになっていた。Googleでは単に「Linux(ベータ版)」と言っている。これが予想を超えて面白く、かつ有用な機能だと気づいた。

Chromebookは比較的安価なパソコンだが、これを購入することで、数年先までの自動更新が保証された盤石のブラウザ環境+クラウド環境に加えて、Crostiniが使える機種ならば、ハードウェアとの相性を気にしなくて良いLinux環境も手に入る。そのLinux環境は、標準機能で簡単に、まるごとGoogle Driveなどへバックアップしてレストアもできる

個人的にはこの気軽さは、「モバイルLinux」として最高だと思った。想像するに、Chromebookを用いる学校などでのICT教育で、Linux環境としてこのCrostiniを用いることが想定されているのかもしれない。

Chromebook Acer 11.6型 ノートパソコン Spin 311 MediaTek M8183C 4GBメモリ 32GB eMMC 360°ヒンジ 英語キーボード タッチパネル搭載 CP311-3H-A14N/E

Chromebook Acer 11.6型 ノートパソコン Spin 311 MediaTek M8183C 4GBメモリ 32GB eMMC 360°ヒンジ 英語キーボード タッチパネル搭載 CP311-3H-A14N/E

日本エイサー

【Amazon.co.jp 限定】 Chromebook Acer 11.6型 ノートパソコン Spin 311 MediaTek M8183C 4GBメモリ 64GB eMMC 360°ヒンジ 日本語キーボード タッチパネル搭載 CP311-3H-A14P

【Amazon.co.jp 限定】 Chromebook Acer 11.6型 ノートパソコン Spin 311 MediaTek M8183C 4GBメモリ 64GB eMMC 360°ヒンジ 日本語キーボード タッチパネル搭載 CP311-3H-A14P

日本エイサー

Homebrew for Linuxを使いたい

私はCrostiniでの環境構築を徐々に進めていて、エディタのVisual Studio Code、日本語入力のfcitx-mozcなどをまず導入した。次に、静的サイトジェネレータであるHugoを導入しようと試みたら、aptで導入されるHugoはバージョンがえらく古かった。ならばここはbrew、すなわち、macOSでも使っているパッケージ管理システムのHomebrewに登場願おう。

公式サイトの手順→導入失敗

次のようなChromebookのCrostini環境にて、

項目内容
機種Acer Chromebook Spin 311 (CP311-3H-A14N/E)
CPUMediaTek M8183C (aarch64)
Chrome OS86.0.4240.77 (Official Build) (32ビット)

Homebrew公式サイトの「Install Homebrew」手順を実行したところ、2020-10-17時点だと、次のような「aarch64用のRuby 2.6.3_2が見つからない」エラーで失敗してしまう。あくまで勘だがこの原因は、releases/tag/2.6.3_2に、aarch64用のアーカイブが置かれていないからかもしれない。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
(中略)
Error: No Homebrew ruby 2.6.3_2 available for aarch64 processors!
Error: Failed to install Homebrew Portable Ruby and cannot find another Ruby 2.6.3!
If there's no Homebrew Portable Ruby available for your processor:
- install Ruby 2.6.3 with your system package manager (or rbenv/ruby-build)
- make it first in your PATH
- try again

Failed during: /home/linuxbrew/.linuxbrew/bin/brew update --force

ひと工夫した手順→導入成功

そこで、手順を次のようにひと工夫してみたところ、ARM版 (aarch64) のChromebookのCrostini環境に、Homebrewが無事導入できたのでご紹介です。

  • aarch64用portable-ruby-2.6.3を、Homebrewが想定している場所にあらかじめ置いておく
  • その上で、公式サイトのAlternative手順にて、Homebrewをインストールする

Step-1. ruby aarch64バイナリをあらかじめ設置する

$ mkdir -p ~/.cache/Homebrew
$ cd ~/.cache/Homebrew
$ wget https://github.com/Homebrew/homebrew-portable-ruby/releases/download/2.6.3/portable-ruby-2.6.3.aarch64_linux.bottle.tar.gz

$ sudo mkdir -p /home/linuxbrew/.linuxbrew/Library/Homebrew/vendor
$ cd /home/linuxbrew/.linuxbrew/Library/Homebrew/vendor
$ sudo tar -zxvf ~/.cache/Homebrew/portable-ruby-2.6.3.aarch64_linux.bottle.tar.gz
$ cd portable-ruby
$ sudo ln -sf 2.6.3 current
$ ls -al

Step-2. rubyにPATHを通して使えることを確認する

$ export PATH=/home/linuxbrew/.linuxbrew/Library/Homebrew/vendor/portable-ruby/current/bin:$PATH
$ which ruby && ruby -v
/home/linuxbrew/.linuxbrew/Library/Homebrew/vendor/portable-ruby/current/bin/ruby
ruby 2.6.3p62 (2019-04-16 revision 67580) [aarch64-linux]

Step-3. 公式サイトのAlternative手順にて、Homebrewをインストールする

ここでは、公式手順にあるPATH「~/.linuxbrew」を「/home/linuxbrew/.linuxbrew」に置き換えている。

$ cd /home/linuxbrew/.linuxbrew/
$ sudo git clone https://github.com/Homebrew/brew /home/linuxbrew/.linuxbrew/Homebrew
$ sudo mkdir /home/linuxbrew/.linuxbrew/bin
$ sudo ln -s /home/linuxbrew/.linuxbrew/Homebrew/bin/brew /home/linuxbrew/.linuxbrew/bin
$ eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)

Step-4. brewコマンドが使えることを確認する

$ cd
$ which brew && brew -v
/home/linuxbrew/.linuxbrew/bin/brew
Homebrew 2.5.6-67-gaa97179
Homebrew/linuxbrew-core N/A

Step-5. brew環境を更新し、異常がないことを確認する

$ sudo chown -R $(whoami) /home/linuxbrew/.linuxbrew/
$ brew update --force
(中略)
Already up-to-date.

$ brew doctor
(※必要な対応を行う)
$ brew doctor
(特になにも言われなくなる)
  • ※1度目のbrew doctor実行時に、You should create these directories and change their ownership to your account.など言われたらその対応を実施

Homebrewの導入は以上です。

さて。やっとここまで来たので念願のbrew install hugoをしてみたところ、今度は、Hugoの動作に必要なGoの導入時に、Error: Your CPU architecture (arm64) is not supported.というエラーが出ている。頭を抱える状態です……。【完】