Flutter

Flutterの検証で使う DeployGate がサクッとM1に入らなかった話

Flutterアプリつくってます。

アプリのテストは、TestFlight というのもありますが、普段テスターとして deploygate を使っているので、自分のプロジェクトでもこちらを導入してみることにしました。

そして前回の記事に続き、サクッと入らなかったので、覚書で残しておく。結果だけ知りたい人は目次からまとめに飛んでください。

前回の記事文字入りPNGをサクッと作る ImageMagick がサクッとM1に入らなかった話

🍄 % brew install imagemagick Error: Cannot install under Rosetta 2 in ARM default prefix (/o ...

続きを見る

deploygateのインストール

前提

deploygateを使うには以下を済ましておきます。

  • xcodeのコマンドラインツールをインストールしておく
  • ライセンスに同意しておく
  • (追記)Ruby2.6.9 インストール

$ xcode-select --install
$ sudo xcodebuild -license accept

digコマンドのインストール

🌼 % dg --version
zsh: command not found: dg

dg コマンド、入ってないですね。

https://deploygate.com/cli 公式サイトのインストールコマンドを実行します。

何やらfetchとinstallが大量におこなわれますが、よく見るとエラーがでています。

🍄 % curl -sSL https://deploygate.com/cli/install | bash
Welcome to DeployGate!

         _            _                       _
        | |          | |                     | |
      __| | ___  ___ | | ___ _   ,____   ___ | |_ ___
     / _` |/ _ \' _ \| |/ _ \ \ / / _ \ / _ `| __/ _ \
    | (_| |  __/ |_) | | (_) \ v / (_| | (_| | |_' __/
     \___, \___| .__/|_|\___/ ` / \__, |\__,_|\__\___`
               |_|           /_/  |___/
 :
 :
ERROR:  Error installing deploygate:
	ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.6.0/gems/unf_ext-0.0.8/ext/unf_ext
/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 ./siteconf20220127-16548-44pb41.rb extconf.rb
checking for -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
 :
 :
  /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-20/2.6.0/unf_ext-0.0.8/mkmf.log

extconf failed, exit code 1

ログ  /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-20/2.6.0/unf_ext-0.0.8/mkmf.log  をみるとエラーでてる。

fatal error: 'ruby/config.h' file not found

Rubyをいれんかい、という雰囲気なので、brewでRubyのバージョン管理ツールを入れる。

M1なので  arch -arm64 をつけるのよ。

🍄 % arch -arm64 brew install rbenv ruby-build

rbenv で初期化する。

🌼 % rbenv init                                         
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init - zsh)"

ターミナル起動時に rbenv が自動で読み込まれる設定をしてね、といっているので仰せのままにします。

🍄 % vim ~/.zshrc
# ターミナル起動時に rbenv を読み込む
eval "$(rbenv init - zsh)"

詳しくは 公式のとこ に。

最新バージョンを確認する。

🌼 % rbenv install --list
2.6.9
2.7.5
3.0.3
3.1.0
jruby-9.3.3.0
mruby-3.0.0
rbx-5.0
truffleruby-22.0.0.2
truffleruby+graalvm-22.0.0.2

3.1.0 でいいのかな?これをインストールします。

🌼 % rbenv install 3.1.0
 :
Installing ruby-3.1.0...
ruby-build: using readline from homebrew

BUILD FAILED (macOS 11.6 using ruby-build 20220125)

Inspect or clean up the working tree at /var/folders/3w/5c6wl2t57j5bykr2gzdp4g4m0000gn/T/ruby-build.20220127122622.34584.J2QZtx
Results logged to /var/folders/3w/5c6wl2t57j5bykr2gzdp4g4m0000gn/T/ruby-build.20220127122622.34584.log

またエラー🥺

ログをみる。 /var/folders/3w/5c6wl2t57j5bykr2gzdp4g4m0000gn/T/ruby-build.20220127122622.34584.log でエラー箇所を探す⛏

readline.c:1903:37: error: use of undeclared identifier 'username_completion_function'; did you mean 'rl_username_completion_function'?
                                    rl_username_completion_function);
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                    rl_username_completion_function
readline.c:79:42: note: expanded from macro 'rl_username_completion_function'
# define rl_username_completion_function username_completion_function
                                         ^
/opt/homebrew/opt/readline/include/readline/readline.h:485:14: note: 'rl_username_completion_function' declared here
extern char *rl_username_completion_function PARAMS((const char *, int));
             ^
compiling stringio.c
1 error generated.

ここをみると、M1 で rbenv 使おうとしてみんな苦しめられているワイ。arch -arm64 をつけて仕切り直し。

🌼 % arch -arm64 rbenv install 3.1.0
Downloading openssl-1.1.1l.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1
Installing openssl-1.1.1l...
Installed openssl-1.1.1l to /Users/hoge/.rbenv/versions/3.1.0

Downloading ruby-3.1.0.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.0.tar.gz
Installing ruby-3.1.0...
ruby-build: using readline from homebrew
Installed ruby-3.1.0 to /Users/hoge/.rbenv/versions/3.1.0

入ったよ!先が長い。

仕切り直しまして、dgのインストール。

🌼 % curl -sSL https://deploygate.com/cli/install | bash
 :
Building native extensions. This could take a while...
ERROR:  Error installing deploygate:
	ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.6.0/gems/unf_ext-0.0.8/ext/unf_ext
/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 ./siteconf20220127-25087-1v9dfpn.rb extconf.rb
checking for -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
 :

ぐはー。まだだめ。さっきとメッセージ違うけど、ログを見る。

lude/ruby-2.6.0/ruby/ruby.h:24:10: fatal error: 'ruby/config.h' file not found
#include "ruby/config.h"
         ^~~~~~~~~~~~~~~

fatal error: 'ruby/config.h' file not found

まだこれがでている。検討違ったかな。

バージョンを確認すると、3.1.0 が有効になっていない? global オプションを付けて切り替え。

🍄 % rbenv versions
* system
  3.1.0
🌼 % rbenv global 3.1.0
🌼 % rbenv versions    
  system
* 3.1.0 (set by /Users/hoge/.rbenv/version)

むりーーーー

と思ったところで、ふと、ターミナル再起動したら?と脳内に誰かがささやく。

新しいターミナルを起動して、もっかいトライ。

🌼 % curl -sSL https://deploygate.com/cli/install | bash
Welcome to DeployGate!
 :
uccessfully installed commander-4.4.6

dg installed! To get started fast:

  $ dg deploy

Successfully installed deploygate-0.6.1
76 gems installed

わーーー。入ったよ!

dg コマンドが動かない

🌼 % dg --version
<internal:/Users/hoge/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- webrick (LoadError)
	from <internal:/Users/hoge/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
 :

webrick というのがないらしい。

webrickをインストールする

bundle add を使って webrick を入れます。

🍄 % bundle add webrick
Could not locate Gemfile

ぐはーーー(2回目)

Gemfileというのがないみたい。このファイルがあるところで、 bundle add webrick すると良いらしい。

探す。

🍄 % find /Users/hoge -name Gemfile

めっっちゃでてくる Gemfile !

deploygateで使われているところを探して、もう一度実行する。

🌼 % cd /Users/hoge/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/deploygate-0.6.1/
🌼 % bundle add webrick
rbenv: version `2.2.0' is not installed (set by /Users/wagtail/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/deploygate-0.6.1/.ruby-version)

2.2.0 が必要らしいけど、rbenv install --list するとそのバージョンがない。2.6.9 を入れてみる

🍄 % arch -arm64 rbenv install 2.6.9
🌼 % rbenv versions                 
  system
  2.6.9
* 3.1.0 (set by /Users/wagtail/.rbenv/version)
🌼 % rbenv global 2.6.9
18:16:33 mst.local [~]
🌼 % rbenv versions    
  system
* 2.6.9 (set by /Users/wagtail/.rbenv/version)
  3.1.0

dgコマンドを実行すると、3.1.0のバージョンしかないと言われるので

🍄 % dg --version
rbenv: dg: command not found

The `dg' command exists in these Ruby versions:
  3.1.0

シェルを再起動して、インストールしなおす。(3.1.0版のdgコマンドはどうやってアンインストールするのかな。フォルダごと削除?🤔 )

🌼 % curl -sSL https://deploygate.com/cli/install | bash
🌼 % dg --version
dg 0.8.4

できたーーーー

まとめ

疲れた!一日かかったよ!

一連の流れ

  • xcodeのコマンドラインツールが入っていること
    • xcode-select --install
    • sudo xcodebuild -license accept
  • 2.6.9のRubyがインストールされていること(2.6.9と3.1.0以外はためしてない)
    • arch -arm64 brew install rbenv ruby-build でRubyのバージョン管理ツール入れる
    • rbenv init して、~/.zsh に eval "$(rbenv init - zsh)" を追加する
    • rbenv install --list でインストール可能なバージョンを確認する
    • arch -arm64 rbenv install 2.6.9 を実行。最新バージョンだと動かないよー
    • rbenv global 2.6.9 でシステム全体でこのバージョンを使うようにする
    • ターミナルを再起動する
  • dgコマンドをインストールする
    • curl -sSL https://deploygate.com/cli/install | bash を実行する
    • dg --version ができればOK

-Flutter