在新的 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 時才建議這樣做。
Brewed Ruby 安裝可執行檔至 $(brew --prefix ruby)/bin
,無須 sudo。您應該將此加入您的路徑。請參閱 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