LoginSignup
0
1

goofysをarm64で使う

Posted at

S3やS3互換のオブジェクトストレージをマウントできるツールとして、goofysが有名です。

s3fsより速いのですが、ビルド済みバイナリにはarm64(aarch64)バイナリがありません。
そして残念なことに単純にgo getやgo installをしてもライブラリ取得関連でコケてしまいビルドが通りません。

GitHubのissueとその返答そのままですが、うまくビルドして利用できたので備忘録としておいておきます。

あとビルド済みバイナリ(アーキテクチャ明記)も置いておきます。(linux/386, linux/amd64, linux/arm64, linux/arm)
(コードでimportのpathを元ソースから一切変えていないので、go installは効かないかと思います。)

結論

  1. リポジトリをcloneする
  2. api/common/panic_logger.goで2重定義の関数を片方消す

説明

1は置いといて、2の2重定義に関してです。

このissueに書いてあることそのままですが、まず、普通にgit cloneしてビルドすると、

$ go build
# github.com/kahing/goofys/api/common
api/common/panic_logger.go:69:27: method FusePanicLogger.BatchForget already declared at api/common/panic_logger.go:41:27
https://github.com/kahing/goofys/issues/754

といった感じでBatchForgetがすでに定義されている、と出てきます。

issueの返信に従って、2回目のBatchForget関数(panic_logger.goの69~72行目)をコメントアウト or 削除します。

これでgo buildが通り、arm64でも動作できるようになります。

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
$ uname -p
aarch64

$ go build
$ ls ./goofys
./goofys
$ ./goofys -h
Error: goofys takes exactly two arguments.

NAME:
   goofys - Mount an S3 bucket locally
(以下略)

これでビルドしたバイナリで実際にARM64なOracleCloudのA1インスタンスでマウントに成功しています。
お困りの方の参考になれば幸いです。

(goofysの元リポジトリへ同様の内容のPRが複数飛んでいるのですが、マージされてませんね。)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1