如果以root身份登录时从命令行运行ruby bundler,则会收到以下警告:
不要以root身份运行Bundler。如果需要,Bundler可以要求sudo, 并以root身份安装捆绑包将破坏所有人的应用程序 这台机器上的非root用户。
以root身份运行捆绑包对它安装的宝石有什么区别?
是否与为每个gem安装的实际文件的权限有关? Ruby会尝试以非root用户身份访问gem文件(如果是这样,Ruby将使用哪个用户/组以及如何查找)?
由于捆绑器被用作root用户而导致应用程序崩溃的症状是什么?
我询问的具体原因是因为我试图在一个非常基本的Centos VPS上使用bundler,我不需要设置任何非root用户。我是having other problems with gems installed via bundler(Error: file to import not found or unreadable: gemname
,尽管gem list
中存在有问题的宝石),我想知道如果通过Bundler以root身份安装宝石可能会使Ruby无法读取文件
如果我确实需要设置一个纯粹用于运行bundler的非root用户帐户,我想解决这个问题,如果我这样做,那么该用户需要哪些组和权限才能允许Ruby运行gems bundler安装。< / p>
或者我可以只是chown
或chgrp
宝石文件夹吗?如果是这样,它是否依赖于与Ruby的安装方式有关? (我使用RVM和我的宝石最终在/usr/local/rvm/gems/
中,由rvm组中的root拥有)This loosely related question's answer implies that unspecified aspects of how Ruby is installed influence bundler's permissions requirements。
研究“不要以root身份运行bundler”消息只会出现an unanswered question和complaints that this warning is apparently "like it saying to go to sleep at 8PM" (link contains NSFW language)。
答案 0 :(得分:10)
所以我不得不深入研究bundler的repo的git log历史,因为git中的GitHub doesn't allow search不再提交消息。
提交c1b3fd165b2ec97fb254a76eaa3900bc4857a357
说:
root用户运行时打印警告。当用户运行捆绑安装时,sudo bundler将打印一个警告,让 他们知道潜在的后果。
关闭#2936
阅读此问题,您了解不应使用root
用户的真正原因:
运行sudo bundle install会导致巨大的级联问题 用户试图将OS X上的gem安装到系统gem中。我们应该 打印一个警告,并解释Bundler会提示sudo,如果它的话 需要。我们也应该警告人们,sudo bundle会破坏git 宝石,因为它们必须由Bundler运行的用户写入 如
答案 1 :(得分:-3)
对于RBENV用户。我刚刚为自己解决了这个问题。您很可能正在使用usr捆绑器。通过键入gem list bundler
如果出现空白,则需要通过
为rbenv安装bundler gem install bundler --no-ri --no-rdoc
重新加载CLI,您现在应该能够在没有sudo的情况下运行bundle。