🦔

M3 MacBookAir でRailsの環境構築していたらgemのインストールで手こずった話

2024/04/17に公開

対象エラー

新しいM3のMac でRails アプリケーションの環境構築をしていた。
bundle installしてたらやたらエラーにぶつかった。
いろんなgemが同じエラーがでる。
調べるとgemのレポジトリ各種でissueがたっていた。
エラーはこんな感じ。

compiling bytebuffer.c
bytebuffer.c:308:20: warning: implicit conversion loses integer precision: 'ssize_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
    return INT2NUM(bytes_read);
           ~~~~~~~ ^~~~~~~~~~
bytebuffer.c:338:20: warning: implicit conversion loses integer precision: 'ssize_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
    return INT2NUM(bytes_written);
           ~~~~~~~ ^~~~~~~~~~~~~
2 warnings generated.
compiling monitor.c
monitor.c:185:40: warning: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
    NIO_Monitor_update_interests(self, interest);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~~~~~
monitor.c:196:40: warning: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
    NIO_Monitor_update_interests(self, interest);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~~~~~
2 warnings generated.
compiling nio4r_ext.c

解決策

オプションつけてやる

gem install (gem名) -v x.x.x -- --with-cflags="-Wno-incompatible-pointer-types"

各gemでissueもたっていて、バージョンアップしていれば問題ない。
しかしメンテされてないgem等の場合は今後解決できないので、オプションつけてやる

実際に実行したコマンド例

gem install jaro_winkler -v 1.5.4 -- --with-cflags="-Wno-incompatible-pointer-types"

もちろんバージョンアップが可能で修正済のgemであれば、バージョンアップで対応できたほうがいいです。

解決策ソース

https://stackoverflow.com/questions/78313570/unable-to-bundle-install-nio4r-on-a-new-mac-m3

参考にしたもの

mysql
https://github.com/brianmario/mysql2/issues/1346#issuecomment-1925565106

nio4r
https://github.com/socketry/nio4r/issues/287#issuecomment-1493469994

jaro_winkler
https://github.com/tonytonyjan/jaro_winkler/issues/51

作業ログ

スクラップ
https://zenn.dev/match8969/scraps/29300bb76eb4d7

Discussion