2010-09-05 22 views
51

Tôi đã cấu hình RVM thành công để sử dụng Ruby 1.9.2 và mọi thứ đều ổn. Tuy nhiên khi tôi đang cố gắng để chạy của Ruby sử dụng sudo nó nói nó không thể tìm thấy RVM hay Ruby:Không thể sử dụng Ruby được cài đặt RVM với sudo

$ ruby -v 
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux] 

$ sudo ruby -v 
[sudo] password for administrator: 
sudo: ruby: command not found 

Có phải đó là hành vi đúng hoặc RVM tôi định cấu hình? Có lẽ tôi nên sử dụng system wide install?

Trả lời

110

Sử dụng rvmsudo lệnh thay vì câu trả lời sudo

+0

+1 - Cảm ơn calas! Điều này làm việc rất nhiều cho tôi. Tôi có nhiều đá quý yêu cầu tôi sử dụng sudo khi chạy chúng (như RubyCAS) và điều này giải quyết được vấn đề của tôi một cách hùng hồn. Cảm ơn một lần nữa! –

+0

cảm ơn bạn cần cài đặt hành khách – MatthewFord

+1

Tôi cần cập nhật rvm để cài đặt lệnh. 'rvm update --head' đã khắc phục sự cố cho tôi, đây chỉ là sau khi cài đặt mới. – tgandrews

1

Sudo đang đặt lại PATH của bạn. rvm hoạt động bằng cách sửa đổi biến môi trường PATH của bạn sao cho ruby ​​bạn đang sử dụng là một biến cụ thể, có thể trong thư mục ~/.rvm/rubies của bạn. Khi bạn ruby ​​ruby ​​với sudo, sudo không sử dụng PATH được sửa đổi đó, và vì vậy nó sẽ không tìm thấy ruby ​​rvm của bạn. Xem câu hỏi này cho cách giải quyết: sudo changes PATH - why?

6

Lấy @calas' thêm một bước nữa, thêm video này vào ~/.bashrc của bạn:

alias sudo=rvmsudo 

Điều này tránh các yêu cầu của việc phải hãy nhớ thay đổi sudo thành rvmsudo cho mọi lệnh (đặc biệt gây phiền nhiễu cho lệnh sao chép/dán).

0

câu trả lời của @ calas là câu trả lời. nhưng nếu bạn không thể đạt được mục tiêu của mình bằng cách sử dụng rvmsudo, ví dụ: cài đặt nginx bằng cách sử dụng lệnh passenger-install-nginx-module, vui lòng chỉ thay đổi chủ sở hữu của thư mục/đường dẫn có liên quan. ví dụ.

$ chown <your_username>:<your_group> /opt -R 
$ passenger-install-nginx-module 
Các vấn đề liên quan