如果以root身份登录时从命令行运行ruby bundler,则会收到以下警告:
不要以root身份运行Bundler.如果需要,Bundler可以请求sudo,并且以root身份安装捆绑包将破坏此计算机上所有非root用户的应用程序.
以root身份运行bundler对它安装的gem有什么区别?
它是否与为每个gem安装的实际文件的权限有关?Ruby会尝试以非root用户身份访问gem文件(如果是这样,Ruby将使用哪个用户/组以及如何查找)?
由于bundle用作root用户而导致应用程序崩溃的症状是什么?
我问的具体原因是因为我试图在一个非常基本的Centos VPS上使用bundler,我不需要设置任何非root用户.我通过bundler安装了宝石的其他问题(Error: file to import not found or unreadable: gemname尽管有问题的宝石存在gem list),我想知道如果通过Bundler以root身份安装宝石可能会让Ruby无法读取文件.
我想解决这个问题,如果我确实需要设置一个纯粹用于运行bundler的非root用户帐户,如果我这样做,那么该用户需要哪些组和权限才能允许Ruby运行gems bundler安装.
或者我可以只是chown或chgrp宝石文件夹?如果是这样,它是否依赖于与Ruby的安装方式有关?(我使用RVM和我的宝石最终/usr/local/rvm/gems/归根组rvm中的root所有)这个松散相关的问题的答案意味着安装Ruby的未指定方面会影响bundler的权限要求.
研究"不要以root身份运行捆绑包"消息只会出现一个未解答的问题和抱怨,这个警告显然"就像它说要在晚上8点睡觉"(链接包含NSFW语言).
Pak*_*Pak 11
所以我不得不深入研究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运行的用户写入.