Flutterの検証で使う DeployGate がサクッとM1に入らなかった話
こちらの記事は、マイブログからの転載です。
Flutterアプリつくってます。
アプリのテストは、TestFlight というのもありますが、普段テスターとして deploygate を使っているので、自分のプロジェクトでもこちらを導入してみることにしました。
deploygateのインストール
前提
deploygateを使うには以下を済ましておきます。
- xcodeのコマンドラインツールがインストールされていること
- ライセンスに同意ししていること
% xcode-select --install
% sudo xcodebuild -license accept
- Ruby2.6.9 がインストールされていること
digコマンドのインストール
公式サイトに書かれているインストールコマンドを実行します。
何やら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で使われているところを探して移動、もう一度 bundle add webrick
実行します。
% 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
-
人工知能を活用したアプリケーションやサービスを活用し、内発的動機付けで行動するエンジニア、起業家、社会起業家をサポートするコミュニティーです。 singularitysociety.org
Discussion