簡體   English   中英

如何在Rails 5.0.0上修復捆綁安裝“ nio4r錯誤”

[英]How to fix a bundle install “nio4r error” on 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.

我通過運行以下命令解決了該問題。

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

我能夠通過以下方式解決此問題:

brew update 

bundle update

我剛才遇到了同樣的錯誤。.就我而言,我已經通過以下軟件包安裝了Ruby: https : //www.brightbox.com/blog/2017/01/13/ruby-2-4-ubuntu-packages /

但是,我還沒有安裝ruby-dev軟件包。

就我而言: sudo apt-get install ruby2.4-dev對我sudo apt-get install ruby2.4-dev

安裝后,我能夠編譯gem: nio4r

我認為您必須安裝一些軟件包ruby-dev => sudo apt-get install ruby-dev

此路徑:

/Users/lukeplourde/.rbenv/...

說明您正在使用rbenv來管理Ruby。

在這種情況下,您永遠都不會出現權限錯誤。 得到一個權限錯誤,這一事實有力地表明,在某些時候你安裝的東西,大概nio4r,成rbenv管理紅寶石使用sudo

使用sudo ,您會暫時將特權提升為系統root用戶的特權,並且所有保存的文件將具有該用戶的讀/寫設置和所有權。 那絕對不是你想要的。

rbenv的文檔專門說不要使用sudo

您不需要sudo來安裝gems。 通常,Ruby版本將由您的用戶安裝並可寫。 安裝gem不需要額外的特權。

要解決該問題,只需運行:

sudo chown -R lukeplourde ~/.rbenv

然后chown將遍歷~/.rbenv目錄中的所有目錄,並將所有子文件和目錄的所有權更改回您。

知道何時使用sudo會帶給您Ruby環境的經驗和知識,您當前的設置以及打算做什么。 通常,如果將rbenv設置為使用已安裝的Ruby,則在使用gem時不希望使用任何sudo命令。 如果您使用的是Mac OS,並且正在使用sudo和rbenv以及安裝的Ruby,則在按Return鍵之前要三思而后行,因為這可能不是您想要的。

而且,如果您同時使用RVM或Homebrew托管Ruby,則上述有關使用sudo警告也適用。 sudo通常不是您想要的第一種方法。 他們官方網站上的文檔是您做什么的最佳信息來源。


您是否重置了文件的所有權?

所有權沒有改變。

大多數情況下,權限問題的根源有兩件事:

  • 所有權
  • 訪問標志

chown更改文件或目錄的所有權,並可以選擇允許我們更改所有者的組。 如果您不是該系統的所有者,並且/或者不是該組的所有者,那么訪問該系統的機會就會減少。

chmod更改所有者,所有者的組和/或計算機上其他所有人的文件或目錄的訪問特權。

有問題的.gitignore文件應歸您所有,並具有-rw-r--r--權限。 如果不是,則需要進行設置。 在命令行上使用man chmodman chown研究chmodchown命令,並適當調整文件/目錄許可權,您應該可以解決此問題。

如果有人在尋找這個,我已經更新了我的計算機,並且命令行工具也已更新。 我需要同意XCode許可證。

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

這為我解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM