确切的错误是:
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.
答案 0 :(得分:9)
我通过运行以下命令解决了这个问题。
bundle config build.nio4r --with-cflags="-std=c99"
bundle
答案 1 :(得分:6)
我能够解决问题:
brew update
和
bundle update
答案 2 :(得分:2)
我刚才遇到了同样的错误..就我而言,我已经通过包安装了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
答案 3 :(得分:1)
此路径:
/Users/lukeplourde/.rbenv/...
显示您正在使用rbenv来管理您的Ruby。
在这种情况下,您永远不应该获得权限错误。您 获取权限错误的事实强烈暗示您在某些时候使用sudo
在rbenv管理的Ruby中安装了某些内容(可能是nio4r)。
当您使用sudo
时,您暂时将您的权限提升为系统的root用户权限,并且保存的所有文件都将具有该用户的读/写设置和所有权。这绝对不是你想要的。
rbenv's documentation明确表示不使用sudo
:
您不需要sudo 来安装宝石。通常,Ruby版本将由您的用户安装和编写。安装宝石不需要额外的权限。
要解决问题,只需运行:
sudo chown -R lukeplourde ~/.rbenv
和chown
将遍历~/.rbenv
目录中的所有目录,并将所有权更改回所有子文件和目录。
知道何时使用sudo
需要获得Ruby环境的经验和知识,您当前的设置以及您打算发生的事情。通常,如果您的rbenv设置为使用您安装的Ruby,则在使用sudo
时不希望使用任何gem
命令。如果您使用的是Mac OS,并且使用的是sudo
和rbenv以及安装的Ruby,请在按返回之前多次思考,因为它可能不是您想要做的。
并且,如果您使用的是RVM或Homebrew托管的Ruby,则上述有关使用sudo
的警告也适用。 sudo
通常不是您想要的第一种方法。他们官方网站上的文档是您做什么的最佳信息来源。
您是否重置了文件的所有权?
所有权没有改变否。
大多数情况下,有两件事情是权限问题的根源:
chown
更改文件或目录的所有权,并可选择允许我们更改所有者的组。如果您不是系统的所有者,和/或不在组中,那么您访问它的机会就会降低。
chmod
更改所有者,其组和/或计算机上其他所有人的文件或目录的访问权限。
有问题的.gitignore
文件应归您所有,并拥有-rw-r--r--
的权限。如果不是,你需要设置它们。在命令行中使用chmod
和chown
研究man chmod
和man chown
命令,并相应地调整文件/目录权限,您应该能够解决问题。< / p>
答案 4 :(得分:1)
如果有人在寻找这个,我已经更新了我的计算机,并且命令行工具也已更新。我需要同意XCode许可证。
Error: You have not agreed to the Xcode license. Please resolve this
by running: sudo xcodebuild -license accept
这为我修复了它。