如何在不为 RVM 用户授予 sudo 访问权限的情况下安装 RVM 系统要求

Posted

技术标签:

【中文标题】如何在不为 RVM 用户授予 sudo 访问权限的情况下安装 RVM 系统要求【英文标题】:How to install RVM system requirements without giving sudo access for RVM user 【发布时间】:2013-05-09 21:51:34 【问题描述】:

在我的 Debian 服务器上,我有一个名为“deployer”的用户,它没有 sudo 访问权限,并且安装了 RVM。

当使用“deployer”安装 Ruby 时,比如 1.9.3,它会触发安装依赖项的任务

"Installing requirements for debian, might require sudo password."

失败并停止安装,因为“部署者”不能 sudo。

我不想将“deployer”添加到 sudoers 列表中,也不想为其他用户安装 RVM,只是为了一次性安装依赖项。

安装该依赖项的正确方法是什么?或者我如何列出它们以手动安装?

【问题讨论】:

Rvm 可能会尝试安装构建依赖项以编译 ruby​​ 的源版本。避免使用“最新”版本并指定明确的 ruby​​ 版本。 感谢您提出这个问题。 【参考方案1】:

accepted answer 无法将 Ruby 安装到 .rvm/bin/ruby。 shell 脚本以.rvm/wrappers/ruby-2.0.0-p247/ruby 结尾,如果您的构建脚本依赖于此位置并且版本号随时间而变化,这会很痛苦。

这是一个对我有用的更简单的解决方案:

\curl -L https://get.rvm.io | bash -s -- --ignore-dotfiles --autolibs=0 --ruby

.rvm/bin/ruby 按预期创建。

来源:http://blog.sunild.com/2013/07/install-ruby-with-rvm-on-mac-os-108.html

【讨论】:

【参考方案2】:

这确实是 RVM 的一个新特性,叫做autolibs,它会自动安装依赖项。

如果您已经安装了 RVM,并且它要求您输入 sudo 密码,您可以禁用自动库:

$ rvm autolibs disable
$ rvm requirements # manually install these
$ rvm install ruby

否则,您可以使用以下命令安装不带自动库的 RVM:

$ \curl -L https://get.rvm.io | bash -s -- --autolibs=read-fail

我理解动机,但觉得这很烦人。我不想将我的 sudo 密码放入 RVM,也不想捆绑!请社区,停止这样做。

【讨论】:

谢谢,我在这方面浪费了很多时间。他们在想什么? 出于好奇,为什么curl 以斜线为前缀?是不是打错字了? @Gili 反斜杠将绕过现有别名,该别名可能包含其他不需要的标志。 virtualenvs 的一个主要目的是避免使用 root 权限,这会完全破坏它。 @MehdiSadeghi 我完全同意。你的评论很完美。【参考方案3】:

我更喜欢这个

$ rvm autolibs fail
$ rvm install ruby
Searching for binary rubies, this might take some time.
Found remote file https://rubies.travis-ci.org/ubuntu/12.04/x86_64/ruby-2.1.1.tar.bz2
Checking requirements for ubuntu.
Missing required packages: gawk g++ gcc make libreadline6-dev zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config libffi-dev
RVM autolibs is now configured with mode '2' => 'check and stop if missing',
please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
or visit https://rvm.io/rvm/autolibs for more information.
Requirements installation failed with status: 1.

然后我可以用root重新登录并运行

# apt-get install gawk g++ gcc make libreadline6-dev zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config libffi-dev

【讨论】:

【参考方案4】:

这个问题是在最新的 RVM 版本中引入的。不知道确切的时间,但肯定在过去 3-4 个月内。

试试这个:

rvm get 1.18.8
rvm install <whichever-version-you-want>

我不知道究竟是什么时候在 1.18.8 和 1.20.12 之间的路径上引入了这个问题,但对我来说,安装适用于 RVM v1.18.8,但会在 v1.20.12 上失败。

【讨论】:

当然不需要降级。

以上是关于如何在不为 RVM 用户授予 sudo 访问权限的情况下安装 RVM 系统要求的主要内容,如果未能解决你的问题,请参考以下文章

新装LINUX系统如何获得ROOT权限

Linux学习笔记——使用指定的用户权限执行程序——sudo

尝试授予权限时拒绝用户“root”@“localhost”的访问。如何授予权限?

如何授予用户对 SQL Server 中数据库的读取权限?

如何授予用户级别访问私有 GitLab 存储库的权限?

如何向属于某个组的用户授予完全 AWS 账户访问权限