0

似乎每次我想在 Snow Leopard 上本地安装一些东西时,我都会遇到一个关于是否安装到 /usr/local 或是否使用 sudo 运行安装命令的问题。我已经阅读了关于此的相互矛盾的建议,包括关于 stackoverflow

gem install errors writable and PATH (use sudo) gem install 权限问题(不要在评论中使用sudo)

我应该使用 sudo 安装 brew formula 和 gems 吗?在没有 sudo 权限的情况下安装时如何避免错误和警告?

例如在运行 gem update 时:

WARNING:  Installing to ~/.gem since /Library/Ruby/Gems/1.8 and
      /usr/bin aren't both writable.
WARNING:  You don't have /Users/luke/.gem/ruby/1.8/bin in your PATH,
      gem executables will not run.

我不是 ruby​​ 开发人员,但想使用 sass 和 compass,所以安装 rvm 似乎有点矫枉过正。将红宝石添加到我的路径中会解决所有这些问题吗?我还在某处看到我应该 chown /usr/local。最好能最终弄清楚这一点。

4

2 回答 2

3

通过解雇 RVM,您对自己造成了极大的伤害。我根本不认为这是矫枉过正,在你写这个 SO 问题的时间里,RVM 已经安装并且你也已经完成了 Ruby 的安装(1.8 或 1.9,无论你喜欢什么)。那么你的 gem 警告和 sudo 问题就不是问题了。如今,Ruby 社区中的几乎每个人都在使用 RVM(除非他们在 Windows 上),在某些情况下,包括在生产环境中

说了这么多,Homebrew(你提到的)有一个 wiki 页面,讨论sudo、将 gems 安装到/usr/local、rubygems 等。你可能比听从他们的建议做得更糟。

于 2011-08-09T04:40:29.097 回答
1

我更喜欢使用sudo,所以我确信以正常权限运行的程序不会与系统范围的文件混淆。出于同样的原因,我通常也以非管理员用户身份运行。这意味着即使不小心损坏了系统,我也会受到保护,但是当我决定安装一些/usr/local我必须使用的东西时sudo,我只会在我确定它不会弄得一团糟时才这样做。对于我不确定的东西,或者我只是想尝试等的东西,我会安装到我家的前缀中。

其他人有更多的单一用户心态,并且/usr/local对自己感到满意。他们可以接受正常使用时弄乱其内容的风险:例如,如果他们尝试在他们家中的前缀上安装一些东西,但是配置很糟糕,它可以在/usr/local没有警告的情况下安装一些东西. OTOH,当他们安装到时,/usr/local他们确信他们不会影响系统的其余部分,只会影响/usr/local他们自己的家。

但是,/usr/local这只是他们主目录的扩展,因为它具有相同的所有权和相同的权限。他们也可以安装~/usr/并添加~/usr/bin到他们的 PATH 中,这就是我想为自己安装东西时所做的。

最好的方法可能是 chgrp/usr/local到某个特殊组,以及sudo该组中可以写入该目录的特殊用户,但不能执行其他随机 sudo 操作。也许有一天我会用这种方式配置它。同时,我更喜欢sudo在我想安装到/usr/local. 使用像 homebrew 这样的包管理器的优点是公式已经过检查以确保它们安装干净,并且可以轻松卸载。

于 2011-08-08T18:15:11.387 回答