Cung cấp ruby ​​cho tất cả người dùng


7

Tôi dự định sử dụng Ruby khi lập trình Raspberry Pi đang chạy Sự cố dựa trên Debian. Thông qua SSH, tôi đã thực hiện:

curl -L https://get.rvm.io | bash -s stable --ruby

đã tải về nguồn ruby ​​và biên dịch nó. Nó công cụ khoảng 2 giờ để hoàn thành. Tôi muốn sử dụng ruby ​​thông qua WebIDE của AdaFbean - http://learn.adafbean.com/webide/ . Tuy nhiên, cài đặt ruby ​​mà tôi đã thực hiện thông qua SSH đã tạo một thư mục có tên .rvmtrong thư mục của pingười dùng, trong khi WebIDE sử webidedụng tài khoản người dùng.

Cách tốt nhất để cho phép webidetài khoản người dùng truy cập ruby ​​là gì? Tôi đã thử chuyển .rvmthư mục từ /home/pisang /etc/share, nhưng điều này không hoạt động - khi thử sử dụng ruby ​​tại một thiết bị đầu cuối, tôi đã gặp lỗi "LRI: Thiếu tệp môi trường RVM: '/home/pi/.rvm/envirments/ruby-2.0. 0-p353 '"vì vậy tôi phải phá vỡ một số liên kết.

Tôi đang giữ lại chạy cài đặt 2 giờ khác cho người dùng webide vì tôi chắc chắn có cách tốt hơn!

Câu trả lời:


18

Đừng bỏ qua giá trị của RVM

Bạn có thể sử dụng phiên bản kho lưu trữ của Ruby nhưng tôi khuyên bạn nên sử dụng một cách khác và sử dụng RVM để quản lý Ruby. Tôi nhận ra có vẻ như nó làm bạn chậm lại, nhưng phiên bản Ruby được triển khai thông qua các kho lưu trữ mặc dù có thể sử dụng thường sẽ dẫn đến các vấn đề trên đường. Nói chung, tốt nhất là tạo các phiên bản chuyên dụng của trình thông dịch và mọi thư viện cần thiết (Đá quý) có thể dành riêng cho một ứng dụng cụ thể và / hoặc trường hợp sử dụng.

RVM cung cấp khả năng cài đặt cho một người dùng (đó là những gì bạn đã làm) cũng như cài đặt nhiều người dùng.

$ curl -L https://get.rvm.io | sudo bash -s stable

Chạy cài đặt theo cách này sẽ tự động kích hoạt RVM để thực hiện cài đặt nhiều người dùng sẽ cài đặt phần mềm bên dưới /usr/local/rvm. Từ đây, phần mềm có thể được truy cập bởi bất kỳ ai thuộc nhóm Unix rvm.

$ sudo usermod -a -G rvm <user>

Người dùng <user>sẽ ở đâu webide.

Cài đặt Ruby

Bây giờ thêm những điều sau đây cho mỗi người dùng $HOME/.bashrc. Tôi thường đặt cái này ở cuối tập tin:

[[ -s /usr/local/rvm/scripts/rvm ]] && source /usr/local/rvm/scripts/rvm

Cùng với đó, bạn sẽ muốn đăng xuất và đăng nhập lại.

LƯU Ý 1: Không đủ để bắt đầu một tab khác trong gnome-terminal, nó cần phải là một phiên mới được đăng nhập. Điều này là để nhóm bạn vừa thêm người dùng này vào, được chọn.

LƯU Ý 2: Có thể bạn sẽ không phải thêm phần trên vào của mình $HOME/.bashrcnếu bạn thấy bạn đã cài đặt tệp sau đây, đây là phần bổ sung ở trên cho tất cả người dùng trong nhóm rvmtrên hệ thống.

$ ls -l /etc/profile.d/rvm.sh 
-rwxr-xr-x 1 root root 1698 Nov 27 21:14 /etc/profile.d/rvm.sh

Sau khi đăng nhập, bạn cần cài đặt Ruby. Bạn có thể làm điều này bằng cách sử dụng các bước sau, với tư cách là người dùng webide.

Những phiên bản có sẵn để cài đặt?

$ rvm list known | less
...
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p374]
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p320]
[ruby-]1.9.3[-p484]
[ruby-]2.0.0-p195
[ruby-]2.0.0[-p353]
[ruby-]2.1.0-preview2
[ruby-]2.1.0-head
ruby-head
...

LƯU Ý: Lần đầu tiên bạn cài đặt Ruby, bạn nên thực hiện việc này với người dùng có sudoquyền để có thể cài đặt các phụ thuộc. Ví dụ: trên Ubuntu, bạn sẽ thấy loại hoạt động này. Sau khi chúng được cài đặt, những người dùng khác, chẳng hạn như webide, cũng có thể cài đặt thêm Rubies vào thư mục /usr/local/rvm.

Installing requirements for ubuntu.
Updating system..............................................................................................................
Installing required packages: libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgdbm-dev, libncurses5-dev, automake, libtool, bison, libffi-dev...............................................................................................
Requirements installation successful.

Xem các phiên bản đã cài đặt

$ rvm list

rvm rubies

 * ruby-1.9.3-p484 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Cài đặt Ruby thứ 2

$ whoami
webide

$ rvm install 2.0.0-p195
...
ruby-2.0.0-p195 - #validate binary
ruby-2.0.0-p195 - #setup
Saving wrappers to '/usr/local/rvm/wrappers/ruby-2.0.0-p195'........
ruby-2.0.0-p195 - #importing default gemsets, this may take time..................

Bây giờ khi chúng tôi liệt kê những gì đã cài đặt:

$ rvm list

rvm rubies

 * ruby-1.9.3-p484 [ x86_64 ]
   ruby-2.0.0-p195 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Từ những điều trên chúng ta có thể thấy rằng người dùng webideđã có thể cài đặt Ruby.

Đặt mặc định cho tất cả người dùng rvm

$ rvm use ruby-2.0.0-p195 --default
Using /usr/local/rvm/gems/ruby-2.0.0-p195

$ rvm list

rvm rubies

   ruby-1.9.3-p484 [ x86_64 ]
=* ruby-2.0.0-p195 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Đăng nhập với tư cách một người dùng khác trong nhóm, rvmchúng ta có thể thấy các hiệu ứng của việc tạo ruby-2.0.0-p195mặc định.

$ rvm list

rvm rubies

=> ruby-1.9.3-p484 [ x86_64 ]
 * ruby-2.0.0-p195 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Vì vậy, người dùng này đang sử dụng ruby-1.9.3-p484và hiện tại anh ta cũng được định cấu hình để sử dụng ruby-2.0.0-p195làm mặc định.

Tải xuống / cài đặt chậm

Nếu bạn đang tải xuống chậm, bạn có thể muốn sử dụng phương pháp cài đặt ngoại tuyến. Điều này sẽ cho phép bạn thực hiện cài đặt lại sau này. Hoặc có lẽ quá trình tải xuống qua hệ thống này có vấn đề và bạn có thể tải xuống trình cài đặt RVM trên một hệ thống, sau đó sử dụng scpđể sao chép trình cài đặt vào hệ thống này sau đó.

$ curl -L https://github.com/wayneeseguin/rvm/tarball/stable -o rvm-stable.tar.gz

Xem ở đây, RVM trong chế độ ngoại tuyến để biết chi tiết đầy đủ.

Người giới thiệu


Cảm ơn. Những loại vấn đề có thể sử dụng phiên bản repo gây ra?
barry

Thông thường các phiên bản của thông dịch viên trong repo được sử dụng cho các phần mềm khác. Đúng là bạn có thể sử dụng chúng và hầu hết thời gian không phải là vấn đề. Nhưng nếu bạn đang thực hiện bất kỳ loại phát triển ứng dụng nào, bạn muốn duy trì quyền kiểm soát ứng dụng cũng như trình thông dịch và Đá quý bạn đang sử dụng. RVM phù hợp cho việc này, các gói trong repos thì không.
slm

Hmmm ... Tôi đã cài đặt lại RVM bằng lệnh bạn đã mô tả và thêm người dùng webide vào nhóm rvm, nhưng vẫn chỉ người dùng pi mới có quyền truy cập ruby.
barry

Tôi không vượt ra ngoài "Phiên bản nào có sẵn để cài đặt?" phần như webide không 'thấy' rvm. Tôi đã kiểm tra tệp / etc / passwd với hy vọng tìm thấy một số khác biệt giữa pi và webide vì tôi không nghĩ webide là người dùng thông thường - nó được tạo ra như một phần của cài đặt ide. Dưới đây là hai mục từ / ect / passwd: pi: x: 1000: 1000: ,,,: / home / pi: / bin / bash webide: x: 1001: 1002 :: / home / webide: / bin / sh
barry

Tôi nghĩ rằng tôi đã nói nó - có một dấu gạch chéo bị thiếu trong dòng đi vào tệp .bashrc. Thật kỳ lạ, người dùng pi làm việc ngay cả với đường dẫn không chính xác trong tệp .bashrc. Tôi chỉ phát hiện ra lỗi vì trình duyệt webide chỉ có thể truy cập bằng trình duyệt và nó sẽ không cho phép tôi dán nên tôi phải nhập nó! Cảm ơn một triệu vì sự giúp đỡ của bạn
barry

1

vì bạn đang chạy một bản phân phối dựa trên debian, cách đơn giản nhất để cài đặt ruby ​​sẽ là chạy phần sau dưới dạng root (ví dụ: sử dụng sudohoặc bất kỳ phương thức nào bạn thích):

 aptitude install ruby

Cảm ơn. Nếu bây giờ tôi sử dụng phương pháp được đề xuất của bạn, bạn có thể đề xuất một cách để dọn sạch cài đặt trước đó không? Linux của tôi là một chút gỉ Như đã đề cập, có một thư mục .rvm trong thư mục nhà của người dùng pi, nhưng tôi nghi ngờ có một số cấu hình khác - xem thông báo lỗi trong bài đăng của tôi
barry

1
Tôi nghĩ rằng tôi đã tìm thấy nó - rvm implode
barry
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.