使所有用户都可以使用 ruby

bar*_*rry 8 debian software-installation ruby multiuser

我打算在对运行基于 Debian 的 Occidentals 的 Raspberry Pi 进行编程时使用 Ruby。通过SSH,我执行了:

curl -L https://get.rvm.io | bash -s stable --ruby
Run Code Online (Sandbox Code Playgroud)

它下载了 ruby​​ 源代码并编译了它。它工具大约需要 2 个小时才能完成。我想通过 AdaFruit 的 WebIDE - http://learn.adafruit.com/webide/使用 ruby 。但是,我通过 SSH 执行的 ruby​​ 安装.rvmpi用户目录中创建了一个文件夹,而 WebIDE 使用webide用户帐户。

允许webide用户帐户访问 ruby的最佳方法是什么?我尝试将.rvm文件夹从移动/home/pi/etc/share,但这不起作用 - 尝试在终端上使用 ruby​​ 时出现错误“错误:缺少 RVM 环境文件:'/home/pi/.rvm/environments/ruby-2.0. 0-p353'" 所以我一定是破坏了一些链接。

我正在阻止为 webide 用户运行另一个 2 小时的安装,因为我确信有更好的方法!

slm*_*slm 20

不要忽视 RVM 的价值

您可以使用 Ruby 的存储库版本,但我建议采用另一种方式并使用 RVM 来管理 Ruby。我意识到它看起来可能会拖慢您的速度,但是通过存储库部署的 Ruby 版本虽然可用但通常会导致问题。通常最好创建专用版本的解释器和任何可以专用于特定应用程序和/或用例的所需库 (Gems)。

RVM 提供了为单用户安装(这就是您所做的)以及进行多用户安装的能力。

$ curl -L https://get.rvm.io | sudo bash -s stable
Run Code Online (Sandbox Code Playgroud)

以这种方式运行安装将自动触发 RVM 进行多用户安装,该安装将在/usr/local/rvm. Unix 组中的任何人都可以从这里访问该软件rvm

$ sudo usermod -a -G rvm <user>
Run Code Online (Sandbox Code Playgroud)

<user>用户在哪里webide

安装 Ruby

现在将以下内容添加到每个用户的$HOME/.bashrc. 我通常把它放在文件的末尾:

[[ -s /usr/local/rvm/scripts/rvm ]] && source /usr/local/rvm/scripts/rvm
Run Code Online (Sandbox Code Playgroud)

有了这个,您将需要注销并重新登录。

注意 1:在 gnome-terminal 中启动另一个选项卡是不够的,它需要是一个新登录的会话。这是为了让您刚刚将此用户添加到的组被选中。

注意2:$HOME/.bashrc如果您发现已经在此处安装了以下文件,则可能不必将上述内容添加到您的文件中,这rvm对系统组中的所有用户执行上述操作。

$ ls -l /etc/profile.d/rvm.sh 
-rwxr-xr-x 1 root root 1698 Nov 27 21:14 /etc/profile.d/rvm.sh
Run Code Online (Sandbox Code Playgroud)

登录后,您需要安装 Ruby。您可以使用以下步骤以用户身份执行此操作webide

可以安装哪些版本?

$ 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
...
Run Code Online (Sandbox Code Playgroud)

注意:第一次安装 Ruby 时,您应该与具有sudo权限的用户一起执行此操作,以便可以安装依赖项。例如在 Ubuntu 上,您会看到这种类型的活动。安装webide完这些之后,其他用户,例如,应该也可以将其他 Ruby 安装到 目录中/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.
Run Code Online (Sandbox Code Playgroud)

查看已安装的版本

$ rvm list

rvm rubies

 * ruby-1.9.3-p484 [ x86_64 ]

# => - current
# =* - current && default
#  * - default
Run Code Online (Sandbox Code Playgroud)

安装第二个 Ruby

$ 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..................
Run Code Online (Sandbox Code Playgroud)

现在,当我们列出已安装的内容时:

$ rvm list

rvm rubies

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

# => - current
# =* - current && default
#  * - default
Run Code Online (Sandbox Code Playgroud)

从上面我们可以看到用户webide能够安装 Ruby。

为所有 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
Run Code Online (Sandbox Code Playgroud)

以组中的另一个用户身份登录,rvm我们可以看到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
Run Code Online (Sandbox Code Playgroud)

所以这个用户正在使用, ruby-1.9.3-p484,而且他现在也被配置ruby-2.0.0-p195为默认使用。

下载/安装缓慢

如果您遇到下载速度缓慢的问题,您可能希望改用离线安装方法。这将允许您稍后重新安装。或者也许通过这个系统下载有问题,你可以在一个系统上下载 RVM 安装程序,然后再将scp安装程序复制到这个系统。

$ curl -L https://github.com/wayneeseguin/rvm/tarball/stable -o rvm-stable.tar.gz
Run Code Online (Sandbox Code Playgroud)

有关完整详细信息,请参见此处,离线模式下的 RVM

参考