web-dev-qa-db-ja.com

バンドルインストール「nio4rエラー」をRails 5.0.0に修正する方法

正確なエラーは次のとおりです。

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

私は次の問題を修正することができました:

brew update 

そして

bundle update
10
CodeTooNarrow

次のコマンドを実行して問題を解決しました。

bundle config build.nio4r --with-cflags="-std=c99"
bundle
11
techdreams

私はちょうど今同じエラーでした..私の場合、私はパッケージを通して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

2
gabrielpedepera

誰かがこれを探しているなら、私は自分のコンピューターを更新し、コマンドラインツールを更新しました。 XCodeライセンスに同意する必要がありました。

Error: You have not agreed to the Xcode license. Please resolve this
 by running:   Sudo xcodebuild -license accept

これは私のためにそれを修正しました。

1
smcdrc

このパス:

/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コマンドを調べ、ファイル/ディレクトリのアクセス許可を適切に調整すると、問題を修正できるはずです。 。

1
the Tin Man