備忘録です。
自身の記事ですが【Rails環境構築】MySQL2が原因で「bundle install」失敗した時の対処法のようなPATHの変更でも解決できない状況に陥ったため。
#環境
OS : Mac OS Catalina 10.15.1
Ruby : v 2.6.3p62
Rails : v 6.0.1
Homebrew : v 2.1.16
Bundle : v 1.17.2
MySQL : v 8.0.18 for osx10.15 on x86_64 (Homebrew)
その他
※ username は個人の作業ユーザ名になります。
$ whoami
=> username
#エラー
$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installingfor. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
( ↑ bashの設定によって色が変わってたりするものの本稿でのエラーには関係なし)
省略
Installing mysql2 0.5.2 with native extensions
Errno::EACCES: Permission denied @ rb_sysopen -
/Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2/CHANGELOG.md
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
mysql2
対応
1. 上記エラーに記載されたディレクトリへ移動
cd /Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/
2. 該当ディレクトリでファイルの詳細を表示(権限確認)
$ ls -la
total 64
drwxr-xr-x 10 root staff 320 12 2 22:08 .
drwxr-xr-x 69 username staff 2208 12 2 22:08 ..
-rw-r--r-- 1 root staff 87 12 2 22:08 CHANGELOG.md
-rw-r--r-- 1 root staff 1078 12 2 22:08 LICENSE
-rw-r--r-- 1 root staff 24534 12 2 22:08 README.md
drwxr-xr-x 4 root staff 128 12 2 22:08 examples
drwxr-xr-x 3 root staff 96 12 2 22:08 ext
drwxr-xr-x 4 root staff 128 12 2 22:08 lib
drwxr-xr-x 10 root staff 320 12 2 22:08 spec
drwxr-xr-x 6 root staff 192 12 2 22:08 support
3. ディレクトリやファイルの権限を 「root」 → 「username」 に変更&確認
$ sudo chown -R username .
$ ls -la
total 64
drwxr-xr-x 10 username staff 320 12 2 22:08 .
drwxr-xr-x 69 username staff 2208 12 2 22:08 ..
-rw-r--r-- 1 username staff 87 12 2 22:08 CHANGELOG.md
-rw-r--r-- 1 username staff 1078 12 2 22:08 LICENSE
-rw-r--r-- 1 username staff 24534 12 2 22:08 README.md
drwxr-xr-x 4 username staff 128 12 2 22:08 examples
drwxr-xr-x 3 username staff 96 12 2 22:08 ext
drwxr-xr-x 4 username staff 128 12 2 22:08 lib
drwxr-xr-x 10 username staff 320 12 2 22:08 spec
drwxr-xr-x 6 username staff 192 12 2 22:08 support
変更されていればok
4. 「bundle install」(成功 or 再度エラーの対応)
恐らくここで完了する方もいれば、筆者のようにまたエラー発生する方もいるかと思います。
「うわ、また同じエラーだ😑」と感じるかもしれませんが、
エラー先の場所をよくよく見ると、gem内(1回目)とextensions内(2回目)で異なるので再度ディレクトリへ移動して権限変更を繰り返します。
$ bundle install
省略
Errno::EACCES: Permission denied @ rb_sysopen -
/Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/gem_make.out
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
mysql2
$ cd /Users/username/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.2/
$ ls -la
total 128
drwxr-xr-x 4 root staff 128 12 2 22:08 .
drwxr-xr-x 12 username staff 384 12 2 22:08 ..
-rw-r--r-- 1 root staff 1999 12 2 22:08 gem_make.out
-rw-r--r-- 1 root staff 58721 12 2 22:08 mkmf.log
$ sudo chown -R username .
$ ls -la
total 128
drwxr-xr-x 4 username staff 128 12 2 22:08 .
drwxr-xr-x 12 username staff 384 12 2 22:08 ..
-rw-r--r-- 1 username staff 1999 12 2 22:08 gem_make.out
-rw-r--r-- 1 username staff 58721 12 2 22:08 mkmf.log
$ bundle install
省略
Bundle complete! 17 Gemfile dependencies, 75 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
これにて終了です!
#その他
誤解や「このやり方のが断然いい」などあれば、ご指摘頂けると幸いです m(_ _)m
#参考記事
rails newでErrno::EACCES: Permission denied @ dir_s_mkdir -の対処法 - Qiita
Errno::EACCES: Permission denied @ dir_s_mkdir が出たので対処した - mimikunの技術メモ
lsコマンドの使い方と覚えたい15のオプション【Linuxコマンド集】