2011-05-01 32 views
1

[email protected]:~/workspace/rails/nwis$ rails -v Rails 3.0.7 [email protected]:~/workspace/rails/nwis$ sudo rails -v sudo: rails: command not found在終端:#rails的作品,但#sudo軌不-RVM寶石

我需要使用sudo,因爲我有一個權限被拒絕的錯誤,當我試圖在我的機器上運行軌道服務器。

我認爲這是RVM和使用Gemsets的問題,但我不知道爲什麼。我已經嘗試使用sudo爲每個命令重新運行Gemset安裝過程,以確保我的root用戶和普通用戶位於同一頁面上,但是這給了我相同的結果。

要明確爲什麼我作爲sudo運行;試圖啓動一個導軌服務器時,這是發生了什麼:

rails server 
=> Booting WEBrick 
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
Exiting 
/home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:267:in `initialize': Permission  denied - /home/alec/workspace/rails/nwis/tmp/pids/server.pid (Errno::EACCES) 
    from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:267:in `open' 
    from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:267:in `write_pid' 
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:203:in `start' 
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands/server.rb:65:in `start' 
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:30:in `block in <top (required)>' 
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:27:in `tap' 
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:27:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>'` 
+0

與rvm,你真的不應該使用sudo - 你可能想嘗試清除系統範圍內安裝的gem(通過sudo安裝)並重新啓動。如果您需要其他用戶擁有的rails目錄,請考慮使用sudo創建必要的組,將自己添加到該組,併爲父目錄提供組寫入權限。 – 2011-05-01 17:48:47

+0

「許可被拒絕」錯誤很有可能是因爲您以前使用過sudo。檢查文件的權限(尤其是tmp和日誌文件),並確保它們屬於alec而不是root。或者只需在rails應用程序目錄中嘗試'sudo chown -R alec:users *'。 (使用一個雖然存在的組,如'alec'或'staff') – 2011-05-01 17:54:38

回答

7

這是你的問題,大概是:

Permission  denied - /home/alec/workspace/rails/nwis/tmp/pids/server.pid 

[R emove(可能通過sudo)以及任何其他可能已經在sudo下創建的臨時文件。那麼你應該能夠像你一樣運行rails,而不需要sudo。混合這兩個將永遠給你權限的麻煩。

或者,也可以在您的rails根目錄中運行sudo chown -R alec:alec .(或任何您的小組),以將所有所有權重置爲您自己。

+0

這是完整的命令嗎?這裏是我的終端: 輸入:〜/ .rvm $ sudo chown -R alec:alec輸出: chown:在'alec:alec'後缺少操作數 – Alec 2011-05-01 18:06:09

+0

對不起,您需要添加要應用的目錄。在我的回覆中修復。 – Thilo 2011-05-01 18:08:53

+0

美麗,謝謝! – Alec 2011-05-01 18:16:35

2

根據你的/ etc/sudoers文件和你的發行版的默認須藤的構建,它很可能是須藤不保留您的PATH(以及其他環境變量)。有幾個選項:

  1. 配置的/ etc/sudoers文件,讓你想要的環境變量,雖然PATH你可能會遇到的問題:sudo changes PATH - why?
  2. 安裝RVM爲根,全系統所有用戶
  3. 使用rvmsudo
+0

選項3剛剛解決了我的類似問題。多謝,夥計。 – chris 2011-05-05 13:22:24