20210125のMacに関する記事は5件です。

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-filemagic

gemをインストールしようとすると以下のようなエラーが出る

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.out

mkmf.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/9117

file-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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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ブラジングしてるとたまに戻っちゃってストレスだったので、これを実行してからは悩まされなくなりました。
めでたし、めでたし。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SourceTreeでグラフが消えちゃった時の対処法

何もしてないのに壊れました

ある日突然自分が使っていたSourceTreeのグラフが消えました
https://community.atlassian.com/t5/image/serverpage/image-id/3881iC0709C23A42BB460?v=1.0

この画像で言う左の部分がごっそりなくなりました

対処方法

説明と書かれている部分を右にドラッグする
ezgif-6-b52ce215a7e9.gif

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Xcodeインストール時の容量不足の対処方法について

環境

  • MacBook Air(2019)
  • Catalina バージョン 10.15.7

問題

  • Xcodeのインストール時に容量不足でインストールが出来ない。
  • 14GBの空きディスク容量でもインストール出来ない。

対処方法

  1. 空きディスク容量を確認する
    「?」 → 「このMacについて」 → 「ストレージ」

  2. 容量を増やす

    • ゴミ箱を空にする
    • 不必要なアプリケーションを削除する
  3. 下記URLからダウンロードする
    https://developer.apple.com/download/more/

  4. 最新バージョンだと容量が大きいため、過去のバージョンをダウンロードすると問題無く、インストール出来る
    ※ただし、古すぎるバージョンだと自分のMacに対応していない可能性もあるので、下記記事を参考に確認する
    https://qiita.com/thinkalot/items/1dfdba642906c1bf1fd2

注意点

Xcode 10.xip(5.4GB)をダウンロードしたい時に約2倍近くのGBが必要になる。
実際は、展開するとXcode 10(12GB)になる。
しかし、12GB分容量を用意しても容量不足でインストール出来ない事があり、その場合は空き容量を増やす事で解決できる。

最後に

Xcode容量デカすぎ!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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 homebrew

brewコマンドが打てない

しかし、このままだと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 .zshrc

brewコマンドが使えるか確認してみる。

% 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.0

2020年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というフォルダが空だったので、一度削除したらインストール出来ました。
スクリーンショット 2021-01-25 0.48.52.png

インストール出来ましたが、また.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の環境も整いました!

ここまで長かった...

環境構築って大変

プログラミングを挫折する人が多い理由の一つに環境構築が大変、というのをよく目にしますが、よく分かった気がします。笑
しかし、色々根気強く調べながらやっていけばなんとかなる!とも思いました。
先輩エンジニアの方々の情報にはとても感謝です。

まだまだ駆け出しの駆け出しですが、もっと頑張るぞ〜

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む