Mac (Apple Silicon) で gcsfuse を使う方法

意外と参考記事がなかったのでメモを残します。 インストールまではスムーズですがその後のセキュリティ絡みのところが面倒でした。

前提

手順

1. Macfuseのインストール

$ brew install --cask macfuse

過去記事では macfuse ではなくosxfuse をインストールするものもありますが osxfuse has been succeeded by macfuse as of version 4.0.0. ということのようなので macfuseをインストールします

2. Goのインストール

$ brew install gcsfuse では、

gcsfuse: Linux is required for this software. libfuse: Linux is required for this software. Error: gcsfuse: Unsatisfied requirements failed this build.

となり、Apple SiliconのMacへは直接インストールできないのでGoをインストールしてビルドします。

$ brew install go

インストールできたらバージョン確認できるはずです

$  go version
go version go1.22.0 darwin/arm64

3. gcsfuseのインストール

$ go install github.com/googlecloudplatform/gcsfuse@master

でインストールはすんなり完了

インストールできたら .zshrc でパスを追加します

export PATH=$HOME/go/bin:$PATH

参考記事に書かれている

GO111MODULE=auto go get -u github.com/googlecloudplatform/gcsfuse

だと、

go: go.mod file not found in current directory or any parent directory.
    'go get' is no longer supported outside a module.
    To build and install a command, use 'go install' with a version,
    like 'go install example.com/cmd@latest'

となっちゃいます。古い情報になってしまっています

ちなみに、Go関連の環境変数は以下で確認できます。インストール後のデフォルト設定を変更する必要はありませんでした

$ go env
GOPATH='/Users/xxx/go'
GOROOT='/opt/homebrew/Cellar/go/1.22.0/libexec'
GOTOOLDIR='/opt/homebrew/Cellar/go/1.22.0/libexec/pkg/tool/darwin_arm64'

4. Cloud Storage への Cloud Storage FUSE リクエストを認証する

Cloud Storage FUSE を使用して Cloud Storage バケットをマウントする  |  Google Cloud に書かれている通り、

$ gcloud auth application-default login
$ gcloud auth login

でok

5. Macのシステム機能拡張を有効にする

ここがかなり面倒です。

この状態で 次の6.のステップでマウントしようとすると

となり、機能拡張を有効にする必要があることがわかります。

システム設定 > プライバシーとセキュリティ

から システム機能拡張を有効にする… をクリックします

すると、

となり、起動セキュリティユーティリティを起動することになります。

起動セキュリティユーティリティの起動

メッセージの通り、システム終了させて電源ボタン押したままで起動させます。

手順はオフィシャルのページに書かれています

Appleシリコンを搭載したMacの起動ディスクのセキュリティ設定を変更する - Apple サポート (日本)

「起動オプションを読み込み中..」と表示されるまで電源ボタンを押し続けます。表示されたら電源ボタンは離してokです

  1. 「オプション」をクリック
  2. 「続ける」をクリック
  3. パスワードが分かっているユーザーを選択
  4. 選択して、「次へ」をクリック
  5. 上部メニューの 「ユーティリティ」から 「起動セキュリティユーティリティを起動」 をクリック
  6. セキュリティポリシーの設定に使用したいシステムを選択してください」と出るので ディスクを選択して 「ロック解除」をクリック
  7. セキュリティポリシー で 「低セキュリティ」を選択し、「確認済みの開発元から提供されたカーネル機能拡張のユーザ管理を強化」 をチェック
  8. OKをクリック
  9. 起動ディスクのメニューから「システム終了」をクリック

再起動後、

再び、システム設定 > プライバシーとセキュリティ を開き、

App Storeと確認済みの開発元からのアプリケーションを許可」を選び、「開発元”Benjamin Fleischer”のシステムソフトウェアの読み込みがブロックされました」 を 「許可」します

新しいシステム機能拡張を使用するには再起動が必要です となるので 再度、Mac再起動させます。

6. バケットのマウント

お疲れさまでした。ここまでできたらあとはバケットをマウントするだけです

# マウント
$ gcsfuse バケット名 マウント先ディレクトリ

# アンマウント
$ umount マウント先ディレクトリ

参考記事