Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby &引用;Don';t以root用户身份运行捆绑程序";-使用root的确切区别是什么?_Ruby_Gem_Bundler - Fatal编程技术网

Ruby &引用;Don';t以root用户身份运行捆绑程序";-使用root的确切区别是什么?

Ruby &引用;Don';t以root用户身份运行捆绑程序";-使用root的确切区别是什么?,ruby,gem,bundler,Ruby,Gem,Bundler,如果在以root用户身份登录时从命令行运行ruby bundler,则会收到以下警告: 不要以root用户身份运行Bundler。如果需要,Bundler可以要求sudo, 而将捆绑包安装为root将彻底破坏此应用程序 此计算机上的非root用户 以root用户身份运行bundler对它安装的gems有什么区别 这与它为每个gem安装的实际文件的权限有关吗?Ruby是否会尝试以非root用户的身份访问gem文件(如果是,Ruby将使用哪个用户/组,我将如何发现) 由于捆绑程序被用作根用户而中断的

如果在以root用户身份登录时从命令行运行ruby bundler,则会收到以下警告:

不要以root用户身份运行Bundler。如果需要,Bundler可以要求sudo, 而将捆绑包安装为root将彻底破坏此应用程序 此计算机上的非root用户

以root用户身份运行bundler对它安装的gems有什么区别

这与它为每个gem安装的实际文件的权限有关吗?Ruby是否会尝试以非root用户的身份访问gem文件(如果是,Ruby将使用哪个用户/组,我将如何发现)

由于捆绑程序被用作根用户而中断的应用程序的症状是什么


我问这个问题的具体原因是因为我试图在一个非常基本的Centos VPS上使用bundler,在这里我不需要设置任何非root用户。我是(
Error:file to import not found或unreadable:gemname
,尽管在
gem list
中存在有问题的gem),我想知道通过bundler作为root安装gem是否会使Ruby无法读取这些文件

我想弄清楚,如果我真的需要为运行bundler设置一个非root用户帐户,如果我需要,这个用户需要什么组和特权才能允许Ruby运行gems bundler安装

或者我可以只
chown
chgrp
gem文件夹吗?如果是这样的话,这是否取决于Ruby的安装方式?(我使用了RVM,我的gems最终位于
/usr/local/RVM/gems/
中,由集团RVM的root所有)


研究“不要以root身份运行bundler”消息只会得到和。

因此我必须深入研究bundler的repo的git日志历史,因为git中的GitHub不再提交消息

提交
c1b3fd165b2ec97fb254a76eaa3900bc4857a357
说明:

根用户运行捆绑程序时打印警告。当用户使用sudo bundler运行bundle安装时,将打印一条警告,让 他们知道潜在的后果

关闭

阅读本期文章,您了解了不应使用
root
用户的真正原因:

运行sudo bundle安装可能会给用户带来巨大的级联问题 试图将OS X上的gems安装到系统gems中的用户。我们应该 打印一条警告,并解释Bundler将在出现错误时提示sudo 需要。我们还应该警告人们sudo bundle会破坏git gems,因为它们必须由Bundler运行的用户编写 作为


回答得很好,谢谢!顺便说一句,那些家伙真的没有做任何事情来挑战程序员不善于沟通或编写清晰的面向用户的消息的刻板印象……太好了!在大多数人“生活”的开发环境中,这一警告是很好的建议。但是Ruby文化在这个问题上有点短视(“固执己见”)。例如,在服务器部署上,可以跳过RVM、RBENV和所有相关的术语,只需在一个位置安装一个版本的Ruby和所有gem作为root。尤其是现在,如果您需要另一个用户/用户环境,只需启动另一个VM。与部署的其他部分相比,很容易浪费更多的时间来获得正确的多Ruby/Gem环境?我的意思是,在标准的nix上可以吗?一旦你已经搞砸了,并以root用户身份运行捆绑程序来安装一些东西,你应该怎么做?如果用户确实知道他/她在做什么,有能力禁用消息,那就太好了。真的吗