1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Apple silicon (M1 Max)でMailCatcherをインストールする

Posted at

M1 MacでMailCatcher( https://mailcatcher.me/ )をインストールしようとした際にちょっとつまづいたので、解決策を備忘録的に。

環境

  • MacBook Pro (2021)
  • M1 Max
  • macOS Monterey v12.0.1
  • ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]

うまくいかなかった時

普通にMailCatcherのサイトにあるように

% gem install mailcatcher

を叩いたら

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

とパーミッションエラーが出たので、「あちゃ、ヤベヤベ……」とsudoつけて再度gem install mailcatcherをしたんですが……

ERROR:  Error installing mailcatcher:
	ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.6.0/gems/thin-1.5.1/ext/thin_parser
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20211130-18489-1g2wtrg.rb extconf.rb
checking for main() in -lc... yes
creating Makefile

current directory: /Library/Ruby/Gems/2.6.0/gems/thin-1.5.1/ext/thin_parser
make "DESTDIR=" clean

current directory: /Library/Ruby/Gems/2.6.0/gems/thin-1.5.1/ext/thin_parser
make "DESTDIR="
compiling parser.c
parser.rl:142:7: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  if (thin_http_parser_has_error(parser) ) {
      ^
parser.rl:142:7: note: did you mean 'http_parser_has_error'?
./parser.h:44:5: note: 'http_parser_has_error' declared here
int http_parser_has_error(http_parser *parser);
    ^
parser.rl:144:14: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  } else if (thin_http_parser_is_finished(parser) ) {
             ^
2 errors generated.
make: *** [parser.o] Error 1

make failed, exit code 2

と再度エラー。
ありゃ、以前のIntel Macの時は問題なく出来てたんだけどな……

thinを個別にインストールしてみるも……

エラーメッセージを見るとthin(Webサーバ)のインストールで躓いているようなので

% sudo gem install thin -v '1.5.1'

でインストールを試みるも、やはりエラーが出る。え〜ん( ; ; )

どうもこのinvalid in C99というのが怪しい。

エラーメッセージにimplicit declaration of function 'thin_http_parser_has_error' is invalid in C99とあるのでこれでググるとこんなページを発見。

ふむふむ、C言語の規格違反エラーによってビルドが止まっているのね。エラーを無視する指定をしてあげれば良いらしい。

% sudo gem install thin -v '1.5.1' -- --with-cflags="-Wno-error=implicit-function-declaration"

これでどうだ!

Successfully installed thin-1.5.1

やっほ〜い♪

最後にもう一度MailCatcherをインストール

これで依存ファイルが入ったはずなので、

% sudo gem install mailcatcher

でインストールすると、無事インストール出来ました。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?