"不要以root身份运行bundler" - 使用root所产生的确切差异是什么?

use*_*ca8 14 ruby gem bundler

如果以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安装.

或者我可以只是chownchgrp宝石文件夹?如果是这样,它是否依赖于与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运行的用户写入.

  • 很好,很好的回答,谢谢!旁注,那些家伙真的没有做任何事情来挑战程序员不擅长沟通或写清楚面向用户的消息的刻板印象...... (3认同)
  • 太好了!在大多数人"活着"的开发环境中,警告是很好的建议.但在这个问题上,Ruby文化有点短视("自以为是"?).例如,在服务器部署上,有一个很好的例子可以跳过RVM,RBENV和所有相关的喧嚣,只需在一个地方以root身份安装一个版本的Ruby和所有Gems.特别是现在,如果您需要其他用户/用户环境,那么您只需启动另一个VM.在部署的其余部分中,很容易浪费更多时间来获得多Ruby/Gem环境. (3认同)
  • 一旦你已经搞砸了并以 root 身份运行捆绑程序来安装某些东西,你应该怎么做? (3认同)
  • 当用户确实知道他/她在做什么时,如果能够禁用该消息,那就太好了。捆绑——真的 (3认同)
  • 您可以使用“bundle config --globalsilence_root_warning true”让保姆保持沉默 (3认同)
  • 所以这个警告只针对 OS X 的东西?我的意思是在标准的尼克斯上可以吗? (2认同)