“不要以root身份运行bundler” – 使用root所产生的确切差异是什么?
如果以root身份登录时从命令行运行ruby bundler,则会收到以下警告:
不要以root身份运行Bundler。 如果需要,Bundler可以请求sudo,并且以root身份安装捆绑包将破坏此计算机上所有非root用户的应用程序。
以root身份运行bundler对它安装的gem有什么区别?
是否与为每个gem安装的实际文件的权限有关? Ruby会尝试以非root用户身份访问gem文件(如果是这样,Ruby将使用哪个用户/组以及如何查找)?
由于bundle用作root用户而导致应用程序崩溃的症状是什么?
我问的具体原因是因为我试图在一个非常基本的Centos VPS上使用bundler,我不需要设置任何非root用户。 我遇到了通过bundler安装gems的其他问题 ( Error: file to import not found or unreadable: gemname
尽管gem list
中存在有问题的gem list
,但是我想知道是否通过Bundler以root身份安装gem可能有使文件对Ruby不可读。
我想解决这个问题,如果我确实需要设置一个纯粹用于运行bundler的非root用户帐户,如果我这样做,那么这个用户需要哪些组和权限才能允许Ruby运行gems bundler安装。
或者我可以只是chown
或chgrp
gem文件夹? 如果是这样,它是否依赖于与Ruby的安装方式有关? (我使用RVM和我的gem最终在/usr/local/rvm/gems/
由root rvm中的root拥有) 这个松散相关的问题的答案暗示了Ruby的安装方式的未指定方面会影响bundler的权限要求 。
研究“不要以root身份运行捆绑包”消息只会出现一个未回答的问题和抱怨,这个警告显然“就像它说要在晚上8点睡觉”(链接包含NSFW语言) 。
所以我不得不深入研究bundler的repo的git log历史,因为GitHub 不再允许在git提交消息中进行搜索 。
提交c1b3fd165b2ec97fb254a76eaa3900bc4857a357
说:
在root运行bundler时打印警告。 当用户使用sudo捆绑器运行捆绑安装时,将打印警告,让他们知道可能的后果。
关闭#2936
阅读本期,您了解不应该使用root
用户的真正原因:
对于试图将OS X上的gem安装到系统gem中的用户来说,运行sudo bundle install会导致巨大的级联问题。 我们应该打印一个警告并解释Bundler会在需要时提示sudo。 我们还应该警告人们sudo bundle会破坏git gem,因为它们必须由Bundler运行的用户写入。
对于RBENV用户。 我刚刚为自己解决了这个问题。 您很可能正在使用usr捆绑器。 通过键入gem list bundler
来validation这一点
如果出现空白,则需要为rbenv via安装bundler
gem install bundler --no-ri --no-rdoc
重新加载CLI,您现在应该可以在没有sudo的情况下运行bundle。