🍓

ripgrep をラズパイや M シリーズチップ搭載 Mac でインストールする方法

2021/10/08に公開

TL;DR

Shell
# For Ubuntu & aarch64
curl -LO https://github.com/microsoft/ripgrep-prebuilt/releases/download/v13.0.0-2/ripgrep-v13.0.0-2-aarch64-unknown-linux-gnu.tar.gz
tar zxvf ripgrep-v13.0.0-2-aarch64-unknown-linux-gnu.tar.gz

背景

ripgrep は grep よりもはるかに高速 なので、基本的に筆者は grep ではなく ripgrep を利用している。

しかし、Ubuntu にインストールする場合は少しだけ障害がある。詳しくは 公式の README に記載されているが、apt でインストールする場合は何やら問題があるらしく、正しく動かない可能性があるとのこと。

筆者の自宅では Ubuntu 20.04.3 をインストールした Raspberry Pi 4 があるのだが、数ヶ月前に新しく OS をインストールし直したところ、そもそも apt ではインストールできなくなっていた。

そこで、推奨されているインストール方法として、リリースノートのアセットリストからパッケージをダウンロードして dpkg -i コマンドでインストールするという方法があるのだが……。

現時点で最新版である 13.0.0 リリースノート を見てみると、なんと aarch64 (arm64) がないことに気づく。

Raspberry Pi 4 は 64-bit なので、自力でソースコードからビルドするしかなくなってしまう。

しかし、さすがに aarch64 に対応していないのは issue に上がっているのではないだろうかと思い、issue を漁ってみると、見事にヒットした。

Not available for aarch64

そして、該当の issue を見てみると、以下のコメントにこの問題の解決案を書いてくれている人を見つけた。

Not available for aarch64

どうやら、Microsoft が ripgrep の aarch64 版のバイナリを提供してくれているようだ[1]

そして、その Microsoft のリポジトリのリリースノート を見てみると、ちゃんと aarch64 版が提供されているのを確認した。

インストール方法

というわけで、さっそくダウンロードしてみる。

最新版の URL は ここ から確認すること。なお、以下のコマンドは Ubuntu 20.04.3 (aarch64) での例である。M シリーズチップ搭載の Mac の場合は ripgrep-v13.0.0-2-aarch64-unknown-linux-gnu.tar.gz の部分を ripgrep-v13.0.0-2-aarch64-apple-darwin.tar.gz に置き換えること。

Shell
# For Ubuntu & aarch64
curl -LO https://github.com/microsoft/ripgrep-prebuilt/releases/download/v13.0.0-2/ripgrep-v13.0.0-2-aarch64-unknown-linux-gnu.tar.gz
tar zxvf ripgrep-v13.0.0-2-aarch64-unknown-linux-gnu.tar.gz

すると、カレントディレクトリに rg というバイナリだけが生成されるので、それをパスの通っているところに置いてシェルを再起動すれば使えるようになる。

Zinit でインストールする

ただ、このやり方だとマシンの環境を新しくしたときなどに、手動でまたインストールし直す必要があったり、インストールしたパッケージ一覧を管理できなかったりして嫌だ。そこで Zinit で管理することにした。

Zinit 自体のインストールに関しては 公式リポジトリ を参照すること。

if [ "$(uname -i)" = "aarch64" ]; then
  zinit ice from"gh-r" as"program" bpick"*aarch64-unknown-linux-gnu*" pick"rg"
  zinit light microsoft/ripgrep-prebuilt
elif [ "$OSTYPE" =~ "darwin" ]; then
  zinit ice from"gh-r" as"program" bpick"*apple-darwin*" pick"rg"
  zinit light microsoft/ripgrep-prebuilt
fi

ただし、Mac 側 (elif のほう) は、筆者の手元に M シリーズチップ搭載の Mac がないため動作確認はしていない。もし間違っていたら教えていただけるとありがたい。

参考サイト

脚注
  1. Microsoft ってこんなことまでしてくれるのか、太っ腹だな。 ↩︎

GitHubで編集を提案

Discussion