似乎每次我想在Snow Leopard上本地安装一些东西时,我都会遇到一个关于是否安装到/ usr / local或是否使用sudo运行安装命令的问题。我已经阅读了相关的建议,包括stackoverflow
Gem install errors writable and PATH(使用sudo) gem install permission problem(请勿在评论中使用sudo)
我应该使用sudo安装brew配方和宝石吗?如何在没有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.
我不是一个红宝石开发人员但是想要使用sass和指南针,所以安装rvm似乎有些过分。只是在我的路径中添加ruby会解决所有这些问题吗?我也看到了应该chown / usr / local的地方。最终深入了解这一点会很好。
答案 0 :(得分:3)
通过解雇RVM,你自己是一个很大的伤害。我认为它根本不会过分,在你写这个SO问题的时候,RVM会安装并且你也会完成安装Ruby(1.8或1.9,无论你喜欢哪个)。然后你的宝石警告和sudo问题将是非问题。现在,ruby社区中的每个人都在使用RVM(除非他们在Windows上),包括在某些情况下in production。
说完所有这些,Homebrew(你提到)has a wiki page谈论sudo
,将宝石安装到/usr/local
,rubygems等。你可能会比遵循他们的建议更糟糕。
答案 1 :(得分:1)
我更喜欢使用sudo
,所以我确信使用普通权限运行的程序不会弄乱系统范围的文件。出于同样的原因,我通常也以非管理员用户身份运行。这意味着即使我意外地保护我免受系统损坏,但当我决定安装某些内容到/usr/local
时,我必须使用sudo
,所以我只有当我确定它赢了时才这样做弄得一团糟。对于我不确定的东西,或者我只想尝试等等,我在家里安装了一个前缀。
其他人有更多的单用户心态,并向自己chown /usr/local
。他们可以正常使用时弄乱其内容的风险:例如,如果他们尝试在家中安装一些东西,但配置是borked,它可以在/usr/local
中安装一些部分而不用一个警告。 OTOH,当他们安装到/usr/local
时,他们确信它们不会影响系统的其余部分,只有/usr/local
和他们自己的家。
但是,/usr/local
只是其主目录的扩展,因为它具有相同的所有权和相同的权限。他们也可以安装到~/usr/
并将~/usr/bin
添加到他们的PATH中,这就是我想为自己安装内容时的操作。
最好的方法可能是将chgrp /usr/local
添加到某个特殊组,将sudo
添加到该组中可以写入该目录但不执行其他随机sudo内容的特殊用户。也许有一天我会以这种方式配置它。与此同时,当我想安装到sudo
时,我更愿意使用/usr/local
。使用像自制程序这样的软件包管理器的优点是已经检查了公式以确保它们安装得很干净,并且可以很容易地卸载它们。