正確なエラーは次のとおりです。
An error occurred while installing nio4r (1.2.1), and bundler cannot continue. Make sure that 'gem install nio4r -v '1.2.1'' succeeds before bundling.
ここにトレースがあります:
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Using rake 12.0.0
Using concurrent-Ruby 1.0.5
Using i18n 0.8.1
Using minitest 5.10.1
Using thread_safe 0.3.6
Using builder 3.2.3
Using erubis 2.7.0
Using mini_portile2 2.1.0
Using rack 2.0.1
Installing nio4r 1.2.1 with native extensions
Errno::EACCES: Permission denied @ rb_sysopen - /Users/lukeplourde/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/nio4r-1.2.1/.gitignore
Using websocket-extensions 0.1.2
Using mime-types-data 3.2016.0521
Using arel 7.1.4
Using byebug 9.0.6
Using coffee-script-source 1.12.2
Using execjs 2.7.0
Using method_source 0.8.2
Using thor 0.19.4
Using debug_inspector 0.0.2
Using ffi 1.9.17
Using multi_json 1.12.1
Using rb-fsevent 0.9.8
Using puma 3.7.0
Using bundler 1.12.5
Using sass 3.4.23
Using tilt 2.0.6
Using sqlite3 1.3.13
Using turbolinks-source 5.0.0
Using tzinfo 1.2.2
Using nokogiri 1.7.0.1
Using rack-test 0.6.3
Using sprockets 3.7.1
An error occurred while installing nio4r (1.2.1), and Bundler cannot continue.
Make sure that `gem install nio4r -v '1.2.1'` succeeds before bundling.
私は次の問題を修正することができました:
brew update
そして
bundle update
次のコマンドを実行して問題を解決しました。
bundle config build.nio4r --with-cflags="-std=c99"
bundle
私はちょうど今同じエラーでした..私の場合、私はパッケージを通してRubyをインストールしました: https://www.brightbox.com/blog/2017/ 01/13/Ruby-2-4-ubuntu-packages /
しかし、私はRuby-dev
パッケージをインストールしていませんでした。
私の場合:Sudo apt-get install Ruby2.4-dev
は私のために働いた。
インストール後、gemをコンパイルすることができました:nio4r
パッケージをインストールする必要があると思いますRuby-dev
=> Sudo apt-get install Ruby-dev
誰かがこれを探しているなら、私は自分のコンピューターを更新し、コマンドラインツールを更新しました。 XCodeライセンスに同意する必要がありました。
Error: You have not agreed to the Xcode license. Please resolve this
by running: Sudo xcodebuild -license accept
これは私のためにそれを修正しました。
このパス:
/Users/lukeplourde/.rbenv/...
rubyを管理するためにrbenvを使用していることを示しています。
その場合、パーミッションエラーが発生することはありません。 areパーミッションエラーが発生したという事実は、ある時点で、そのrbenv-managed Ruby using Sudo
を使用して何か(おそらくnio4r)をインストールしたことを強く示唆しています。 。
Sudo
を使用すると、一時的に特権をシステムのrootユーザーの特権に昇格させ、保存されたすべてのファイルにそのユーザーの読み取り/書き込み設定と所有権が与えられます。それは間違いなくあなたが望むものではありません。
rbenvのドキュメント 具体的にはSudo
を使用しないように指示しています:
gemをインストールするのにSudoは必要ありません。通常、Rubyバージョンがインストールされ、ユーザーが書き込み可能になります。gemをインストールするために追加の権限は必要ありません。
問題を修正するには、次のコマンドを実行します。
Sudo chown -R lukeplourde ~/.rbenv
chown
は~/.rbenv
ディレクトリ内のすべてのディレクトリをウォークスルーし、すべての子ファイルとディレクトリの所有権をあなたに戻します。
Sudo
をいつ使用するかを知るには、Ruby環境、現在の設定、および何を行う予定かについての経験と知識が必要です。ただし、一般的に、rbenvの場合は、Rubyインストールしたものを使用するように設定されています。Sudo
を使用するときにgem
コマンドを使用しないでください。MacOSを使用していて使用している場合Sudo
とrbenvとa Rubyインストールしてから、押す前に何度も考えてください Return それはあなたがやりたいことではない可能性が高いからです。
また、Sudo
の使用に関する上記の警告は、RVMまたはHomebrewマネージドRubyも使用している場合に適用されます。通常、Sudo
は望ましい最初のアプローチではありません。彼らの公式サイトのドキュメントは、何をすべきかについてのあなたの最良の情報源です。
ファイルの所有権をリセットしましたか?
所有権は変更されませんでした。
ほとんどの場合、権限の問題の根本には2つのことがあります。
chown
はファイルまたはディレクトリの所有権を変更し、オプションで所有者のグループを変更できるようにします。あなたがシステムによる所有者ではない場合、および/またはグループに属していない場合、それにアクセスできる可能性は低くなります。
chmod
は、所有者、そのグループ、および/またはマシン上の他のすべてのユーザーのファイルまたはディレクトリのアクセス権限を変更します。
問題の.gitignore
ファイルはあなたが所有し、-rw-r--r--
の権限を持っている必要があります。そうでない場合は、そうなるように設定する必要があります。コマンドラインでman chmod
およびman chown
を使用してchmod
およびchown
コマンドを調べ、ファイル/ディレクトリのアクセス許可を適切に調整すると、問題を修正できるはずです。 。