在新的 macOS 安装中,有两个空目录可供所有用户添加附件
/Library/Ruby
/Library/Perl
你需要 sudo 才能安装到这些目录,如下所示:sudo gem install
或 sudo cpan -i
。
避免使用 sudo 的一种选择是使用访问控制列表。例如
chmod +a 'user:<YOUR_NAME_HERE> allow add_subdirectory,add_file,delete_child,directory_inherit' /Library/Python/3.y/site-packages
将允许你以自己的身份向 Python 3.y 添加包,这可能比更改目录的组所有权更安全。
习惯吧?
一个原因是可执行文件进入 /usr/local/bin
。通常这不是一个可写位置。但是,如果你按照我们的建议在 macOS Intel 上安装 Homebrew,/usr/local
将可以在不使用 sudo 的情况下写入。因此,你现在可以安装所需的开发工具,而不用冒使用 sudo 的风险。
仅在你不使用酿造的 Python 时才建议这样做。
在 macOS 上,任何 Python 版本 X.Y 也会在 ~/Library/Python/X.Y/lib/python/site-packages
中搜索模块。该路径可能还不存在,但你可以创建它
mkdir -p ~/Library/Python/2.7/lib/python/site-packages
要教 easy_install
和 pip
在那里安装,可以使用 --user
开关或创建一个 ~/.pydistutils.cfg
文件,其中包含以下内容
[install]
install_lib = ~/Library/Python/$py_version_short/lib/python/site-packages
Virtualenv 提供 pip
,并创建具有单独 site-packages
的隔离 Python 环境,因此不需要 sudo。
仅在你不使用 rbenv 或 RVM 时才建议这样做。
酿造的 Ruby 在不使用 sudo 的情况下将可执行文件安装到 $(brew --prefix ruby)/bin
。你应该将此添加到你的路径中。有关最新信息,请参阅 ruby
配方中的注意事项。
为了让 Ruby 安装到 /usr/local
,我们需要将 gem: -n/usr/local/bin
添加到你的 ~/.gemrc
中。它是 YAML,所以手动执行或使用此
echo "gem: -n/usr/local/bin" >> ~/.gemrc
但是,1.3.6 之前的 RubyGems 所有版本都有缺陷,并会忽略上述设置。遗憾的是,新安装的 Snow Leopard 附带 1.3.5。目前已知的解决此问题的方法是作为 root 升级 rubygems
sudo gem update --system
只需将所有内容安装到 Homebrew 前缀中,如下所示
echo "export GEM_HOME=\"$(brew --prefix)\"" >> ~/.bashrc
请注意,你可能不想这样做,因为 Apple 认为这不是一个好的默认设置。
如果你曾经做过 sudo gem
等操作,那么很多文件将被创建并归 root 所有。使用以下命令修复
sudo chown -R $(whoami) /Library/Ruby/* /Library/Perl/* /Library/Python/*
Perl 模块 local::lib
的工作方式类似于 rbenv/RVM(尽管仅适用于模块,不适用于 Perl 安装)。一个简单的解决方案是仅稍微污染你的 /Library/Perl
,即使用 sudo 安装 local::lib
sudo cpan local::lib
请注意,这将安装一些其他依赖项,如 Module::Install
。然后在你的 shell 的启动中放置适当的咒语,例如对于 .profile
,你会插入以下内容;对于其他内容,请参阅 local::lib
文档。
eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
现在(在你重新启动 shell 之后),cpan
或 perl -MCPAN -eshell
等将安装 ~/perl5
中的模块和二进制文件,并且相关子目录将位于你的 PATH
和 PERL5LIB
中。
如果你甚至不想(或不能)使用 sudo 来引导 local::lib
,只需手动在 ~/perl5
中安装 local::lib
,并在 .bashrc
eval 咒语之前将相关路径添加到 PERL5LIB
。
另一个选择是使用 perlbrew
在你的主目录或任何你想要的位置安装 Perl 的单独副本
curl -L https://install.perlbrew.pl | bash
perlbrew install perl-5.16.2
echo ".~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc