[英]Can't install gems on OS X "El Capitan"
我無法在 El Capitan Beta 5 上安裝和運行fakes3
gem。
我試過:
sudo gem install fakes3
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/fakes3
然后我試着用 cocoapods 的方式來做。 它適用於可可豆,但不適用於假貨3。
mkdir -p $HOME/Software/ruby
export GEM_HOME=$HOME/Software/ruby
gem install cocoapods
[...]
1 gem installed
gem install fakes3
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
免責聲明: @theTinMan 和其他 Ruby 開發人員經常指出在安裝 gems 時不要使用sudo
並指出諸如RVM 之類的東西。 在進行 Ruby 開發時,這是絕對正確的。 繼續使用它。
然而,我們中的許多人只想要一些恰好作為 gem 分發的二進制文件(例如fakes3
、 cocoapods
、 xcpretty
……)。 我絕對不想費心管理一個單獨的 ruby。 以下是您更快的選擇:
如果您希望全局安裝這些工具,則使用sudo
可能沒問題。
問題是這些二進制文件安裝在/usr/bin
,這是自 El Capitan 以來禁止的。 但是,您可以將它們安裝到/usr/local/bin
。 這就是Homebrew安裝它的東西的地方,所以它可能已經存在。
sudo gem install fakes3 -n/usr/local/bin
Gems 將安裝到/usr/local/bin
並且您系統上的每個用戶都可以使用它們,如果它在他們的PATH 中。
以下將在~/.gem
安裝 gems 並將二進制文件放入~/bin
(然后您應該將其添加到您的PATH
)。
gem install fakes3 --user-install -n~/bin
無論哪種方式,您都可以將這些參數添加到您的~/.gemrc
這樣您就不必記住它們:
gem: -n/usr/local/bin
即echo "gem: -n/usr/local/bin" >> ~/.gemrc
或者
gem: --user-install -n~/bin
即echo "gem: --user-install -n~/bin" >> ~/.gemrc
(提示:您也可以輸入--no-document
跳過生成 Ruby 開發人員文檔。)
這是因為 OS X“El Capitan”的新安全功能。 嘗試添加--user-install
而不是使用 sudo:
$ gem install *** --user-install
例如,如果你想安裝 fake3 只需使用:
$ gem install fake3 --user-install
sudo gem install -n /usr/local/bin cocoapods
嘗試這個。 它肯定會起作用。
您必須將 Xcode 更新到最新版本 (v7.0.1),一切都會正常進行。
如果在安裝最新的 Xcode 后仍然無法正常工作,請嘗試以這種方式安裝 gem:
sudo gem install -n /usr/local/bin GEM_NAME_HERE
例如:
sudo gem install -n /usr/local/bin fakes3
sudo gem install -n /usr/local/bin compass
sudo gem install -n /usr/local/bin susy
看起來升級到 OS X El Capitain 時,/usr/local 目錄以多種方式修改:
[編輯] 還有一個初步的事情要做:升級 Xcode...
$ sudo chown -R $(whoami):admin /usr/local
這將修復/usr/local
目錄的權限,這將有助於gem install
和brew install|link|...
命令正常工作。
確保您已修復/usr/local
目錄的權限(請參閱上面的 #1)
首先嘗試使用以下命令重新安裝您的 gem:
sudo gem install <gemname>
請注意,它將安裝指定 gem 的最新版本。
如果你不想面對向后兼容的問題,我建議你首先確定你想要得到哪個 gem 的哪個版本,然后用-v version
重新安裝它。 請參閱下面的示例以確保系統不會獲得新版本的 capistrano。
$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ sudo gem install capistrano -v 3.4.0
更新 brew 並升級您的公式
$ brew update
$ brew upgrade
您可能還需要手動重新鏈接其中的一些
$ brew link <formula>
如前所述,該問題來自自“El Capitan”以來 Mac OSX 的安全功能。
使用默認系統 Ruby,安裝過程發生在/Library/Ruby/Gems/2.0.0
目錄中,該目錄對用戶不可用並給出錯誤。
您可以使用以下命令查看 Ruby 環境參數
$ gem env
有一個安裝目錄和一個用戶安裝目錄。 要使用用戶安裝目錄而不是默認安裝目錄,您可以使用--user-install
參數代替使用sudo
,這絕不是推薦的做法。
$ gem install myGemName --user-install
在此過程中不應再有任何供股。 然后將 gem 安裝在用戶目錄中: ~/.gem/Ruby/2.0.0/bin
但是為了使安裝的 gems 可用,這個目錄應該在你的路徑中可用。 根據Ruby 的 faq ,您可以~/.bash_profile
下行添加到您的~/.bash_profile
或~/.bashrc
if which ruby >/dev/null && which gem >/dev/null; then
PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi
然后關閉並重新加載您的終端或重新加載您的.bash_profile
或.bashrc
( . ~/.bash_profile
)
這是我使用的解決方案:
注意:此修復程序適用於我在另一個 SO 問題上寫的指南針,但我使用相同的過程來恢復所有終端進程的功能,顯然您安裝的 gem 不同,但過程是相同的。
我遇到過同樣的問題。 這是由於 Apple 實施了系統完整性保護 (SIP)。 你必須先禁用它...
以恢復模式重新啟動:
重新啟動並按住Command + R直到您看到蘋果徽標。
啟動后,從頂部欄中選擇實用程序 > 終端。
類型: csrutil disable
然后輸入: reboot
一旦重新啟動
打開終端備份並輸入命令:
sudo gem uninstall bundler
sudo gem install bundler
sudo gem install compass
sudo gem install sass
sudo gem update --system
需要修復失敗的單個寶石,因此對每個寶石執行以下操作:
在我的機器上,這是第一個不工作的依賴項,所以我列出了它:
sudo gem pristine ffi --version 1.9.3
繼續瀏覽需要修復的寶石列表。 您總共需要大約 10 分鍾的時間來修復它,但是您將擁有指南針工作的終端命令。
如果您嘗試安裝的 gem 需要 xml 庫,請嘗試以下操作:
sudo gem install -n /usr/local/bin <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/
具體來說,我在 OS X El Capitan 上安裝 nokogiri gem v 1.6.8 時遇到了問題
這最終對我有用:
sudo gem install -n /usr/local/bin nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/
要確保安裝了 libxml2 和 libxslt,您可以執行以下操作:
brew install libxml2 libxslt
brew install libiconv
然后檢查以確保您安裝了 xcode 命令行工具:
xcode-select --install
應該返回這個錯誤:
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
重新安裝 RVM 對我有用,但之后我不得不重新安裝所有 gem:
rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm reload
安裝 El Capitan 后我遇到了同樣的問題,我嘗試將 sass 和 compass 安裝到 symfony 項目中,以下命令返回以下錯誤:
$ sudo gem 安裝指南針
錯誤:安裝指南針時出錯:錯誤:無法構建 gem 本機擴展。
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
檢查 ffi.h... /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434:in `try_do': 編譯器未能生成可執行文件。 (運行時錯誤)
所以我然后嘗試安裝 sass: $ sudo gem install sass
得到相同的錯誤消息,經過一番谷歌搜索后,我設法使用以下命令安裝了 sass:
$ sudo gem install -n /usr/local/bin sass
以上對我安裝 sass 有效,但不適用於安裝指南針。 我讀到有人在某處打開了一個 xcode 實例,然后再次關閉它,然后成功運行了相同的命令,然后為他們工作。 我嘗試打開 xcode,但收到一條消息提示安裝的 xcode 版本與 El Capitan 不兼容。 所以我然后從應用商店更新了 xcode,重新運行了這次成功運行的以下命令:
$ sudo gem install -n /usr/local/bin 指南針
然后我就可以運行 $ compass init
我現在有我所有的寶石工作,可以繼續構建一些可愛的 sass 東西:)
我不得不rm -rf ./vendor
然后再次運行bundle install
。
您可能有兩種選擇:
rvm fix-permissions
~
目錄也就是您的主目錄中重新安裝。如果您使用的是自制軟件,則命令為:
brew uninstall ruby
對於沒有自制軟件的 rails 卸載命令是:
rvm remove
這應該通過運行命令重新安裝最新的 ruby:
curl -L https://get.rvm.io | bash -s stable --rails<br>
Mac 已經安裝了 2.6.3 工廠,這是必需的......如果沒有運行這個命令:
rvm install "ruby-2.6.3"
進而:
gem install rails
最后你會收到一些錯誤消息,說你必須添加一些其他的包......
安裝時請確保您在 home ~
目錄中,這樣權限就不會成為問題,但以防萬一...
我又跑了:
rvm fix-permissions
和:
rvm debug
這告訴我我必須下載紗線,我沒有為它保存輸出。 基本上,如果與我的操作系統有關,我會按照提示告訴我的去做。
-D
我不喜歡用 sudo 安裝東西。 一旦你開始使用 sudo 你就無法停止..
嘗試授予 Gems 目錄的權限。
sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0
sudo chown -R $(whoami):admin /usr/local
這將返回權限(Homebrew 在那里安裝 ruby)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.