簡體   English   中英

無法在 OS X“El Capitan”上安裝 gems

[英]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 分發的二進制文件(例如fakes3cocoapodsxcpretty ……)。 我絕對不想費心管理一個單獨的 ruby​​。 以下是您更快的選擇:

選項 1:繼續使用 sudo

如果您希望全局安裝這些工具,則使用sudo可能沒問題。

問題是這些二進制文件安裝在/usr/bin ,這是自 El Capitan 以來禁止的 但是,您可以將它們安裝到/usr/local/bin 這就是Homebrew安裝它的東西的地方,所以它可能已經存在。

sudo gem install fakes3 -n/usr/local/bin

Gems 將安裝到/usr/local/bin並且您系統上的每個用戶都可以使用它們,如果它在他們的PATH 中

選項 2:安裝在您的主目錄中(不帶 sudo)

以下將在~/.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 開發人員文檔。)

就我而言,我不得不使用Brew重新安裝 Ruby。 這似乎解決了問題,因為我可以再次安裝 gems。

brew install 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 目錄以多種方式修改:

  1. 用戶權限被重置(這對於使用 Homebrew 的人來說也是一個問題)
  2. 二進制文件和符號鏈接可能已被刪除或更改

[編輯] 還有一個初步的事情要做:升級 Xcode...

#1 的解決方案:

$ sudo chown -R $(whoami):admin /usr/local

這將修復/usr/local目錄的權限,這將有助於gem installbrew install|link|...命令正常工作。

#2 的解決方案:

基於 Ruby 的問題

確保您已修復/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 並升級您的公式

$ 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

您可能有兩種選擇:

  1. 如果您已經安裝了 ruby​​ 和 rails,您可以先嘗試運行以下命令:
     rvm fix-permissions
  2. 您可以完全卸載 ruby​​,然后在您的~目錄也就是您的主目錄中重新安裝。

如果您使用的是自制軟件,則命令為:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM