2011-08-06 31 views
12

Tôi đang sử dụng Debian Squeeze làm hệ điều hành của mình và đang cố gắng phát triển một dự án Ruby on Rails. Đối với điều đó tôi lần đầu tiên cài đặt một số gói ruby.cách đặt ruby1.9.1 làm phiên bản mặc định trên debian squeeze

phiên bản ruby ​​của tôi là: ruby1.8, ruby1.9.1

Sau đó, tôi gỡ bỏ cài đặt ruby1.8 để làm ruby1.9.1 ruby ​​mặc định của tôi.

Bây giờ nếu tôi chạy:

$ which ruby 

nó hiển thị gì.

Nếu tôi chạy:

$ which ruby1.9.1 
/usr/bin/ruby1.9.1 

Tuy nhiên:

$ rails new testApp 
bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory 

Tôi không biết phải làm gì. Xin vui lòng hướng dẫn cho tôi.

+0

Xem câu hỏi này: http://stackoverflow.com/questions/1892877/how-do-i-make-ruby-1-9-the-default-ruby-on-ubuntu – weakish

Trả lời

1

mặc dù tôi không có câu trả lời trực tiếp cho câu hỏi của bạn, tôi khuyên bạn nên thử với công cụ rvm (ruby version manager) tuyệt vời (http://beginrescueend.com/). Nó làm cho cuộc sống của tôi dễ dàng hơn nhiều khi tôi cố gắng chơi với ruby ​​trên Ubuntu.

+0

Cảm ơn bạn đã phản hồi, tôi đã thử quá khi tôi chạy ** bash <<(curl -s https://rvm.beginrescueend.com/install/rvm)** tôi đã nhận ** L ERI: không thể sao chép Kho lưu trữ RVM, đã thử cả git: // và https : // ** – Arivarasan

+0

đảm bảo bạn không phải là tường lửa và cũng đã cài đặt git trước. kịch bản bootstrap cài đặt đang phàn nàn về việc không thể kiểm tra tài nguyên. Google sẽ là người bạn tốt nhất của bạn về điều này. –

+1

Lưu ý: rvm đã thay đổi quy trình cài đặt của họ, luôn truy cập https://rvm.io/ để kiểm tra mới nhất. – ocodo

9

Những gì tôi làm trên hộp bóp của tôi để có được ruby ​​1.9 như mặc định:

cd /usr/bin 
ln -sf ruby1.9.1 ruby 
ln -sf gem1.9.1 gem 
ln -sf erb1.9.1 erb 
ln -sf irb1.9.1 irb 
ln -sf rake1.9.1 rake 
ln -sf rdoc1.9.1 rdoc 
ln -sf testrb1.9.1 testrb 

tôi chạy nhiều máy chủ sản xuất đường ray theo cách này và tất cả các gói debian ruby ​​khác không bị hỏng bởi vì họ tiếp vào/usr /bin/ruby1.8 binary.

Đây không phải là "cách thực sự của debian" nhưng vì một lý do nào đó, update-alternatives không hỗ trợ định cấu hình ruby ​​khi siết chặt.

Trong Ubuntu 11.10 bạn chỉ có thể chạy update-alternatives --config ruby và chọn phiên bản mong muốn

Tôi cũng khuyên bạn nên cập nhật rubygems trước khi bạn bắt đầu cài đặt bất kỳ viên ngọc REALLY_GEM_UPDATE_SYSTEM=true gem update --system

12

Đối bóp Debian (6.0):

Đầu tiên đảm bảo gỡ cài đặt tất cả các gói ruby ​​và ruby1.8. Nếu không, họ sẽ can thiệp vào các tệp nhị phân/liên kết sắp được thiết lập cho ruby ​​1.9.

Sau đó cài đặt gói ruby ​​1.9. Mặc dù các gói này có tên '1.9.1' nhưng chúng thực sự cài đặt phiên bản ruby ​​1.9.2 trên Debian squeeze. Gói ảo ruby1.9.1-full sẽ cài đặt tất cả các gói cần thiết cho ruby:

sudo aptitude install ruby1.9.1-full 

Thêm liên kết thay thế cho ri và manpage trong gói ri1.9.1. (Hai dòng này là tất cả một lệnh.)

sudo update-alternatives --install /usr/bin/ri ri /usr/bin/ri1.9.1 10 \ 
--slave /usr/share/man/man1/ri.1.gz ri.1.gz /usr/share/man/man1/ri1.9.1.1.gz 

Thêm liên kết thay thế cho ruby, tệp nhị phân liên kết và trang con người trong gói ruby1.9.1. (Những dòng này là tất cả một lệnh.)

sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 10 \ 
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz /usr/share/man/man1/ruby1.9.1.1.gz \ 
--slave /usr/bin/erb erb /usr/bin/erb1.9.1 \ 
--slave /usr/bin/gem gem /usr/bin/gem1.9.1 \ 
--slave /usr/bin/irb irb /usr/bin/irb1.9.1 \ 
--slave /usr/bin/rake rake /usr/bin/rake1.9.1 \ 
--slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.1 \ 
--slave /usr/bin/testrb testrb /usr/bin/testrb1.9.1 \ 
--slave /usr/share/man/man1/erb.1.gz erb.1.gz /usr/share/man/man1/erb1.9.1.1.gz \ 
--slave /usr/share/man/man1/gem.1.gz gem.1.gz /usr/share/man/man1/gem1.9.1.1.gz \ 
--slave /usr/share/man/man1/irb.1.gz irb.1.gz /usr/share/man/man1/irb1.9.1.1.gz \ 
--slave /usr/share/man/man1/rake.1.gz rake.1.gz /usr/share/man/man1/rake1.9.1.1.gz \ 
--slave /usr/share/man/man1/rdoc.1.gz rdoc.1.gz /usr/share/man/man1/rdoc1.9.1.1.gz \ 
--slave /usr/share/man/man1/testrb.1.gz testrb.1.gz /usr/share/man/man1/testrb1.9.1.1.gz 

Lưu ý rằng đây là tất cả được lắp đặt tại một ưu tiên thay thế thấp của 10 (phần cuối cùng sau khi --install cờ nhưng trước khi --slave cờ). Điều này được thực hiện với hy vọng rằng các phiên bản tương lai của Debian sẽ bao gồm cả ruby ​​1.8 và ruby ​​1.9 như là một phần của hệ thống thay thế và ghi đè lên các liên kết này.

Kiểm tra ri trong hệ thống lựa chọn:

update-alternatives --display ri 

Kết quả:

ri - auto mode 
link currently points to /usr/bin/ri1.9.1 
/usr/bin/ri1.9.1 - priority 10 
slave ri.1.gz: /usr/share/man/man1/ri1.9.1.1.gz 
Current 'best' version is '/usr/bin/ri1.9.1'. 

Kiểm tra ruby ​​trong hệ thống lựa chọn:

update-alternatives --display ruby 

Kết quả:

ruby - auto mode 
link currently points to /usr/bin/ruby1.9.1 
/usr/bin/ruby1.9.1 - priority 10 
slave erb: /usr/bin/erb1.9.1 
slave erb.1.gz: /usr/share/man/man1/erb1.9.1.1.gz 
slave gem: /usr/bin/gem1.9.1 
slave gem.1.gz: /usr/share/man/man1/gem1.9.1.1.gz 
slave irb: /usr/bin/irb1.9.1 
slave irb.1.gz: /usr/share/man/man1/irb1.9.1.1.gz 
slave rake: /usr/bin/rake1.9.1 
slave rake.1.gz: /usr/share/man/man1/rake1.9.1.1.gz 
slave rdoc: /usr/bin/rdoc1.9.1 
slave rdoc.1.gz: /usr/share/man/man1/rdoc1.9.1.1.gz 
slave ruby.1.gz: /usr/share/man/man1/ruby1.9.1.1.gz 
slave testrb: /usr/bin/testrb1.9.1 
slave testrb.1.gz: /usr/share/man/man1/testrb1.9.1.1.gz 
Current 'best' version is '/usr/bin/ruby1.9.1'. 
+0

Tôi nhận được lỗi sau khi cài đặt thay thế 'cập nhật thay thế: lỗi: đá quý thay thế không thể là nô lệ của ruby: nó là một thay thế chủ.' –

+0

Phiên bản Debian này là gì? Các lệnh trên được đặc biệt cho squeeze (6.x). Có lẽ có một cấu hình còn sót lại từ gói rubygems1.8 hoặc một trong số các gói ruby ​​1.8 khác. Những gói và cấu hình của họ có bị xóa hoàn toàn không? – finn

+0

Tôi đã bỏ lỡ bước * 1 * đã xóa ruby ​​1.8 Đã hy vọng có cách chuyển đổi giữa các phiên bản. Tôi sẽ cắn đạn và nâng cấp mặc dù. –

Các vấn đề liên quan