- 投稿日:2021-01-25T21:32:00+09:00
Mac(apple silicon)でruby-filemagicのgemインストール時に ld: library not found for -lgnurx というエラーが出たときの対応
この記事の対象者
Macでapple silicon版homebrewを利用している人向け
現象
Rubyのfile-magicのインストールで以下のようなエラーが出ることがあります
gem install -v 0.7.2 ruby-filemagicgemをインストールしようとすると以下のようなエラーが出る
Building native extensions. This could take a while... ERROR: Error installing ruby-filemagic: ERROR: Failed to build gem native extension. current directory: /Users/sogasawara/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/ruby-filemagic-0.7.2/ext/filemagic /Users/sogasawara/.rbenv/versions/2.5.5/bin/ruby -I /Users/sogasawara/.rbenv/versions/2.5.5/lib/ruby/site_ruby/2.5.0 -r ./siteconf20210125-7199-4elsmm.rb extconf.rb checking for -lgnurx... no checking for magic_open() in -lmagic... no *** ERROR: missing required library to compile this module *** 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. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/sogasawara/.rbenv/versions/2.5.5/bin/$(RUBY_BASE_NAME) --with-magic-dir --without-magic-dir --with-magic-include --without-magic-include=${magic-dir}/include --with-magic-lib --without-magic-lib=${magic-dir}/lib --with-gnurx-dir --without-gnurx-dir --with-gnurx-include --without-gnurx-include=${gnurx-dir}/include --with-gnurx-lib --without-gnurx-lib=${gnurx-dir}/lib --with-gnurxlib --without-gnurxlib --with-magiclib --without-magiclib To see why this extension failed to compile, please check the mkmf.log which can be found here: /Users/sogasawara/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/extensions/-darwin-20/2.5.0/ruby-filemagic-0.7.2/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /Users/sogasawara/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/ruby-filemagic-0.7.2 for inspection. Results logged to /Users/sogasawara/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/extensions/-darwin-20/2.5.0/ruby-filemagic-0.7.2/gem_make.outmkmf.logを見ると以下のように書いてある。
have_library: checking for -lgnurx... -------------------- no "clang -o conftest -I/Users/sogasawara/.rbenv/versions/2.5.5/include/ruby-2.5.0/-darwin20 -I/Users/sogasawara/.rbenv/versions/2.5.5/inc ld: warning: directory not found for option '-L/opt/local/lib' checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(int argc, char **argv) 4: { 5: return 0; 6: } /* end */ "clang -o conftest -I/Users/sogasawara/.rbenv/versions/2.5.5/include/ruby-2.5.0/-darwin20 -I/Users/sogasawara/.rbenv/versions/2.5.5/inc ld: warning: directory not found for option '-L/opt/local/lib' ld: library not found for -lgnurx clang: error: linker command failed with exit code 1 (use -v to see invocation) checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: extern int t(void); 5: int main(int argc, char **argv) 6: { 7: if (argc > 1000000) { 8: printf("%p", &t); 9: } 10: 11: return 0; 12: } 13: 14: int t(void) { ; return 0; } /* end */ -------------------- have_library: checking for magic_open() in -lmagic... -------------------- no "clang -o conftest -I/Users/sogasawara/.rbenv/versions/2.5.5/include/ruby-2.5.0/-darwin20 -I/Users/sogasawara/.rbenv/versions/2.5.5/inc conftest.c:13:57: error: use of undeclared identifier 'magic_open' int t(void) { void ((*volatile p)()); p = (void ((*)()))magic_open; return !p; } ^ 1 error generated. checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: extern int t(void); 5: int main(int argc, char **argv) 6: { 7: if (argc > 1000000) { 8: printf("%p", &t); 9: } 10: 11: return 0; 12: } 13: int t(void) { void ((*volatile p)()); p = (void ((*)()))magic_open; return !p; } /* end */ ...環境:
Mac Mini(apple silicon, BigSur 11.1)
,rbenv (v2.5.5)
原因
homebrewはこれまで
/usr/local
以下にアプリケーションをインストールしていたがM1版のhomebrewはデフォルトで/opt/homebrew
以下にインストールする仕様となった。
ref: https://github.com/Homebrew/brew/pull/9117file-magicではネイティブエクステンションでhomebrewでインストールされたlibmagicを利用するが、libmagicのファイル探索先に新しくデフォルトとなった
/opt/homebrew
が含まれていないため上記のようなエラーが出ることがあるっぽい具体的にはこちらのファイルでlibmagic関連のファイルを探索する際にエラーが出る。
該当箇所は以下。
dir_config('magic', HEADER_DIRS, LIB_DIRS)dir_configメソッドを使ってヘッダファイルとlibファイルの探索先を決めるようだが探索先には
/opt/homebrew
がないためエラーが出おーrたと思われる対策
dir_configは特定のコマンドライン引数を使って探索先を変更できるので、ビルドオプションをいじればインストールできるはず。
ref: https://ruby-doc.org/stdlib-2.5.0/libdoc/mkmf/rdoc/MakeMakefile.html#method-i-dir_config例えば以下でインストールできた
sh
gem install -v 0.7.2 ruby-filemagic -- \
--with-magic-include=/opt/homebrew/include \
--with-magic-lib=/opt/homebrew/lib
こちらでもインストールできた
gem install -v 0.7.2 ruby-filemagic -- --with-magic-prefix=/opt/homebrewこちらでもできた。(あまりこのあたり詳しくないので間違ってたらすみません)
gem install -v 0.7.2 ruby-filemagic -- --with-magic-dir=$(brew --prefix libmagic)
/opt/homebrew/include
や/opt/homebrew/lib
の中身はsymbolic linkで実体は別の場所にあるので実体のpathにしてもよいのかもしれませんbundle installする場合
gem install同様ビルドオプションをつければよいはず。例えば以下のようなコマンドを打てばok
bundle config --local build.ruby-filemagic "--with-magic-dir=$(brew --prefix libmagic)"あとはインストールするだけ
bundle install --path=vendor/bundle
- 投稿日:2021-01-25T18:50:55+09:00
chrome で二本指での戻る、進むスワイプを行わないようにする(mac、2021年)
はじめに
Webブラウジングしてると、タッチパッドの2本指スワイプで、横スクロールしようとしたのに戻る・進むになっちゃうことってありますよね。
以前まではchrome://flagsを開いて設定できていたようですが、仕様が変わったようで設定項目の"Overscroll history navigation on Touchpad"がないようです。
参考:Chromeで2本指スワイプの戻る・進むを無効にする(Win/Mac共通)解決方法
ターミナルで以下を実行するだけ。
たぶんソフトを再度立ち上げなくても反映されているはず。defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool FALSEまとめ
間違ってスクロールしちゃうってことは人によっては結構あるのではないでしょうか?
webブラジングしてるとたまに戻っちゃってストレスだったので、これを実行してからは悩まされなくなりました。
めでたし、めでたし。
- 投稿日:2021-01-25T16:56:41+09:00
SourceTreeでグラフが消えちゃった時の対処法
何もしてないのに壊れました
ある日突然自分が使っていたSourceTreeのグラフが消えました
https://community.atlassian.com/t5/image/serverpage/image-id/3881iC0709C23A42BB460?v=1.0この画像で言う左の部分がごっそりなくなりました
対処方法
以上
- 投稿日:2021-01-25T15:34:42+09:00
Xcodeインストール時の容量不足の対処方法について
環境
- MacBook Air(2019)
- Catalina バージョン 10.15.7
問題
- Xcodeのインストール時に容量不足でインストールが出来ない。
- 14GBの空きディスク容量でもインストール出来ない。
対処方法
空きディスク容量を確認する
「?」 → 「このMacについて」 → 「ストレージ」容量を増やす
- ゴミ箱を空にする
- 不必要なアプリケーションを削除する
下記URLからダウンロードする
https://developer.apple.com/download/more/最新バージョンだと容量が大きいため、過去のバージョンをダウンロードすると問題無く、インストール出来る
※ただし、古すぎるバージョンだと自分のMacに対応していない可能性もあるので、下記記事を参考に確認する
https://qiita.com/thinkalot/items/1dfdba642906c1bf1fd2注意点
Xcode 10.xip(5.4GB)をダウンロードしたい時に約2倍近くのGBが必要になる。
実際は、展開するとXcode 10(12GB)になる。
しかし、12GB分容量を用意しても容量不足でインストール出来ない事があり、その場合は空き容量を増やす事で解決できる。最後に
Xcode容量デカすぎ!!
- 投稿日:2021-01-25T01:21:56+09:00
【M1チップ】Homebrew経由でのRubyインストールに苦戦した
概要
プログラミング勉強真っ只中の私ですが、先日M1チップ搭載のMacbook Proを購入しました。
そこでRuby on Railsの環境構築をしようとしたところ苦戦しましたが、初心者の私でもなんとか出来たのでやったことを残しておきます。
(最初はHomebrewって何?美味しいの?ってレベルでした)参考にさせていただいた記事
https://qiita.com/aiorange19/items/5ffaefc85f912f60c2fa動作環境
・Macbook Pro (13-inch, M1, 2020)
・macOS Big Sur (ver11.0.1)Xcodeをインストールして無い人は予めインストールしておくと幸せになれるかもしれません。
(App StoreからDL出来ます)
容量約12GBなのでめっちゃ時間かかった。Homebrewのインストール
Homebrewをインストールします。
https://brew.sh/index_ja公式ドキュメントにも記載があるように、M1チップのMacでは「/opt/homebrew」にインストールすることが推奨されているので、そうしましょう。
自分の場合は何も考えずに公式サイトのコードをコピペして自動的に「/opt/homebrew」にインストールされましたが...。(訳)
ただし、macOSIntelでは/ usr / local、macOSARMでは/ opt / homebrew、Linuxでは/home/linuxbrew/.linuxbrewにインストールしてください。予めディレクトリを作っておいて、インストール先を指定した方が良いかもしれません。
% cd /opt /opt % sudo mkdir homebrew /opt % curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrewbrewコマンドが打てない
しかし、このままだとbrewコマンドが打てなかった
% brew -v zsh: command not found: brewで、ここで最初の壁にぶち当たりましたが、どうやらPATHというものを通さなければならないらしい。
PATHを通すためには「.zshrc」
というファイルにその旨のコードを記述する必要があるっぽいんですけど...% ls -a . Documents Music Public Downloads .. Dropbox .DS_Store Movies Pictures Library Desktop .adobe .zsh_history .cups .zsh_sessions .dropbox .Trash Creative Cloud Files .localそのファイルが無い\(^o^)/
無くて焦りましたが、なかったら作れば良いということで作りました。
作成したら、PATHを通すコードを記述します。% touch .zshrc % open ~/.zshrc # .zshrcに下記を記述 export PATH=/opt/homebrew/bin:$PATH # またはコマンドラインで下記を実行 % echo 'export PATH=/opt/homebrew/bin:$PATH' >> .zshrc # .zshrcが編集できたら設定を反映させるために下記を実行 % source .zshrcbrewコマンドが使えるか確認してみる。
% brew -v Homebrew 2.7.5 # Homebrewのバージョンが表示されればOK無事PATHを通せました。
rbenvでRubyのインストール
Homebrewがインストール出来たら、Rubyのバージョン管理ができるようにrbenvをインストールします。
% brew install rbenvこれも先ほどと同じようにPATHを通す必要があるので、
.zshrc
に追記します。% open ~/.zshrc # 下記を記述 export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" # またはコマンドラインで下記を実行 % echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .zshrc % echo 'eval "$(rbenv init -)"' >> .zshrc # 設定を反映 % source .zshrcこれでRubyインストールの準備完了です。
Rubyのインストール
# 公開されている(DL可能な)Rubyのバージョン一覧を確認 % rbenv install -l 2.5.8 2.6.6 2.7.2 3.0.0 jruby-9.2.14.0 mruby-2.1.2 rbx-5.0 truffleruby-21.0.0 truffleruby+graalvm-21.0.02020年12月25日に
Ruby 3.0.0
が公開されましたが、ここでは2.7.2
をインストールしました。
Ruby 3.0.0はなんか動作が早くなったとか...。
もうちょっと勉強したらアップデートしようと思います。ということでRubyをインストール
% rbenv install 2.7.2、、、しようとしましたがなぜか上手くいかない。
いろいろ調べると、
openssl
関連で上手くいっていないようでした。
とりあえずインストールを試みましたが...% brew install openssl Error: /opt/homebrew/opt/openssl@1.1 is not a valid kegなんやこれ...
このエラー解消に結構時間がかかってしまいました。結果、
/opt/homebrew/Cellar
に作られてたopenssl@1.1
というフォルダが空だったので、一度削除したらインストール出来ました。
インストール出来ましたが、また
.zshrc
を編集してPATHを通します。% which openssl /usr/bin/opensl # homebrewへPATHを通しましょう # .zshrcに下記を追記 export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib" export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig" export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/homebrew/opt/openssl@1.1" # 設定を反映 % source .zshrc # 再度opensslの場所を確認 % which openssl /opt/homebrew/opt/openssl@1.1/bin/openssl % openssl version OpenSSL 1.1.1i 8 Dec 2020 # ちゃんとインストール出来てる # homebrewへリンクを通す % brew link opensslこれでようやくRubyをインストールできるはず!
% rbenv install 2.7.2 Downloading ruby-2.7.2.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.bz2 Installing ruby-2.7.2... ruby-build: using readline from homebrew BUILD FAILED (macOS 11.0.1 using ruby-build 20210119) Inspect or clean up the working tree at /var/folders/p8/krxwz5vn6ld7l4_bc2g1xnbr0000gn/T/ruby-build.20210124030531.27274.KLMWnZ Results logged to /var/folders/p8/krxwz5vn6ld7l4_bc2g1xnbr0000gn/T/ruby-build.20210124030531.27274.log Last 10 log lines: checking for off_t... yes checking char bit... 8 checking size of int... 4 checking size of short... 0 checking size of long... 0 checking size of long long... configure: error: in `/var/folders/p8/krxwz5vn6ld7l4_bc2g1xnbr0000gn/T/ruby-build.20210124030531.27274.KLMWnZ/ruby-2.7.2': configure: error: cannot compute sizeof (long long) See `config.log' for more details You have not agreed to the Xcode license agreements, please run 'sudo xcodebuild -license' from within a Terminal window to review and agree to the Xcode license agreements....あれ?
最後を見ると、Xcodeインストールしとけや!って書いてありますね。
はい。自分は最初にインストールしてなかったのでここでまた無駄なダウンロード待ち時間が発生しました。3度目の正直
Xcodeをインストールし、再度実行。さすがに頼む。
% rbenv install 2.7.2 Downloading ruby-2.7.2.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.bz2 Installing ruby-2.7.2... ruby-build: using readline from homebrew Installed ruby-2.7.2 to /opt/homebrew/opt/rebind/versions/2.7.2出来たーーー!!
あとは下記の流れに沿って...
% rbenv versions * system (set by /opt/homebrew/opt/rebind/version) 2.7.2 % rbenv rehash % rbenv global 2.7.2 % rbenv versions system * 2.7.2 (set by /opt/homebrew/opt/rebind/version) % ruby -v ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [arm64-darwin20]これでRubyのバージョン切り替えができるようになりました!
Ruby on Railsのインストール
Railsもインストールしておきましょう。
% gem install rails # バージョン指定しなければ最新版がインストールされる...と思います。 # 最後に一通り更新しておく % rbenv rehash % source ~./zshrc # Railsのバージョン確認 % rails -v Rails 6.1.1これでRuby on Railの環境も整いました!
ここまで長かった...
環境構築って大変
プログラミングを挫折する人が多い理由の一つに環境構築が大変、というのをよく目にしますが、よく分かった気がします。笑
しかし、色々根気強く調べながらやっていけばなんとかなる!とも思いました。
先輩エンジニアの方々の情報にはとても感謝です。まだまだ駆け出しの駆け出しですが、もっと頑張るぞ〜