2017-03-07 127 views
3

確切的錯誤是:如何解決捆on Rails的安裝 「nio4r錯誤」 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. 
+1

你可以把整個日誌輸出? – lcguida

+0

將整個日誌添加到您的問題中,然後嘗試在單獨的wa中安裝nio4r gem,否則請從rubygems.org下載並執行安裝。 –

+0

你應該嘗試運行:'gem install nio4r -v 1.2.1'來安裝gem'nio4r',看看問題是什麼。 –

回答

1

我能與解決問題:

brew update 

and

bundle update 
0

此路徑:

/Users/lukeplourde/.rbenv/... 

顯示你使用rbenv來管理你的Ruby。

在這種情況下,您永遠不應該獲得權限錯誤。你得到權限錯誤的事實強烈表明,在某些時候,你使用sudo將某些東西(可能是nio4r)安裝到rbenv管理的Ruby中。

當您使用sudo時,您暫時將您的權限提升爲系統root用戶的權限,並且保存的所有文件都將擁有該用戶的讀/寫設置和所有權。這絕對不是你想要的。

rbenv's documentation明確表示不使用sudo

你不需要須藤安裝寶石。通常,Ruby版本將由用戶安裝並寫入。安裝寶石不需要額外的權限。

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

sudo chown -R lukeplourde ~/.rbenv 

chown將通過所有的目錄中~/.rbenv目錄走路和改變所有權還給你所有子文件和目錄。

瞭解何時使用sudo需要了解Ruby環境的經驗和知識,您當前的設置以及打算髮生的事情。一般來說,如果您的rbenv設置爲使用您安裝的Ruby,則在使用gem時,您不希望使用任何sudo命令。如果您使用的是Mac OS,並且您使用的是sudo和rbenv以及您安裝的Ruby,則在按返回之前會多次考慮,因爲它可能不是您想要執行的操作。

而且,以上有關使用sudo的警告也適用於您使用RVM或自制軟件管理的Ruby。 sudo通常不是您想要的第一種方法。他們官方網站上的文檔是您做什麼的最佳信息來源。


你重置文件的所有權?

所有權沒有改變沒有。

大部分時間裏,兩件事情是在權限問題的根源:

  • 所有權
  • 訪問標誌

chown更改的文件或目錄的所有權以及可選的我們改變所有者的小組。如果根據系統和/或不在該組中,您不是所有者,那麼訪問它的機會就會下降。

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

有問題的.gitignore文件應歸您所有,並且擁有-rw-r--r--的權限。如果那些不是,你需要設置它們。在命令行中使用man chmodman chown研究chmodchown命令,並適當調整文件/目錄權限,然後您應該可以解決該問題。

+0

沒有sudo命令,關於nio4r的錯誤仍然是一樣的。 – CodeTooNarrow

+0

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

+0

所有權沒有改變沒有。 – CodeTooNarrow

1

我是同樣的錯誤剛纔。在我的情況,我已經安裝過包紅玉:https://www.brightbox.com/blog/2017/01/13/ruby-2-4-ubuntu-packages/

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

在我的情況:sudo apt-get install ruby2.4-dev爲我工作。

安裝後,我能夠編譯寶石:nio4r

我認爲你必須安裝一些包ruby-dev => sudo apt-get install ruby-dev

+1

我應該在MacOS Sierra上提及此問題10.12.3 – CodeTooNarrow

+0

'/ Users /'是判斷它是Mac OS系統還是常規* nix的關鍵。 Mac OS不使用'apt-get'。 –

6

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

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

我的冠軍,我的英雄。所有科技夢想成真的意思!我愛你。 –