为什么需要 rvmsudo 来安装 passenger

Why rvmsudo is needed to install passenger

我四处浏览但无法找到乘客安装需要 rvmsudo 的原因。

我正在我的服务器上安装带有 nginx 的 passenger,并且我正在使用 RVM。根据 passenger user manual 如果我安装了 rvm,我需要使用 rvmsudo 来安装 passenger。

使用 rvmsudo 和不使用 rvmsudo 有什么区别?尽管只在本地安装了 rvm,是否仍需要使用 rvmsudo 进行系统范围的安装? (只需使用 gem install passenger

谢谢!

sudo 授予当前用户一个命令 root 权限以携带某个 activity(假设用户被允许使用 sudo)。也就是说,在安装 passenger 时,您需要 root 权限才能在所需位置安装文件。

立即想到的一件简单的事情是:

sudo rvm passenger-install-nginx-module

这行不通!这是 explanation:

However, this won't work at all. sudo will start a new subshell. That new subshell's environment will be completely different, and won't contain RVM, nor will it have access to your user's RVM without trying to hack in RVM's environment variables yourself.

因此您需要使用RVM提供的解决方案,即rvmsudo。它将传递 RVM 设置的任何环境变量,以使您获得正确的 Ruby 以及 sudo 权限,这正是您在此示例中安装 passenger 所需要的。