OS X “El Capitan” üzerine taşlar yüklenemiyor


182

fakes3El Capitan Beta 5'e mücevher yükleyemiyorum ve çalıştıramıyorum .

Denedim:

sudo gem install fakes3
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/fakes3

Sonra da cocoapods yapmayı denedim. Kocoapodlar için çalıştı, ancak sahte3 için değil.

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.

3
sudoRuby'yi yüklemek için veya mücevherleri değiştirmek için kullanmayın . Bunun yerine Ruby'yi yüklemek ve yönetmek için rbenv veya RVM kullanın. İlgili sitelerdeki talimatları okuyun ve uygulayın. Ve her iki durumda da, kurulumdan sonra sudoneyin değiştiğini ve neden yapmak istediğinizi anlamadığınız sürece kullanmayın .
Tin Man

Yanıtlar:


333

Feragatname: @ theTinMan ve diğer Ruby geliştiricileri genellikle sudotaşlar kurarken kullanmamaya işaret ederler ve RVM gibi şeylere işaret ederler . Ruby geliştirme yaparken bu kesinlikle doğrudur. Devam et ve kullan.

Ancak, çoğumuz sadece olur bazı ikili bir mücevher olarak dağıtılacak istiyorum (örn fakes3, cocoapods, xcpretty...). Kesinlikle ayrı bir yakut yönetmekle uğraşmak istemiyorum. Daha hızlı seçenekleriniz şunlardır:

Seçenek 1: sudo kullanmaya devam et

kullanma sudoBu araçların global olarak yüklenmesini istiyorsanız, muhtemelen iyidir.

Sorun, bu ikili monte olmasıdır /usr/binki, -yasak El Capitan'da yana. Ancak, bunları /usr/local/binyerine yükleyebilirsiniz . Homebrew'un eşyalarını kurduğu yer burası, muhtemelen zaten var.

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

Mücevher içine kurulacak /usr/local/binve onların içinde olmadığını sisteminizdeki her kullanıcı bunları kullanabilir PATH .

2. Seçenek: Ana dizininize yükleyin (sudo olmadan)

Aşağıdaki mücevherleri yükleyecek ~/.gemve içine ikili dosyalar koyacaktır ~/bin(daha sonra buna eklemeniz gerekir PATH).

gem install fakes3 --user-install -n~/bin

Varsayılan yap

Her iki durumda da, bu parametreleri kendi adresinize ekleyebilirsiniz, ~/.gemrcböylece bunları hatırlamanız gerekmez:

gem: -n/usr/local/bin

yani echo "gem: -n/usr/local/bin" >> ~/.gemrc

veya

gem: --user-install -n~/bin

yani echo "gem: --user-install -n~/bin" >> ~/.gemrc

( İpucu:--no-document Ruby geliştirici belgeleri oluşturmayı atlamak için de atabilirsiniz .)


Çok teşekkür ederim! Demlemek ve yakut yeni sürümleri ile mücadele var ama yine de / usr / bin sorunu geçemedi. Çalışırken istenen yolu belirtmek gem installsorunu çözdü.
Daniel Saidi

.gemrcSahip olmalıdır gem: -n /usr/local/bin(-n sonra boşluk gerekir).
Paul Schreiber

@PaulSchreiber Beş aydır boş yer kullanmıyorum. :) Emin misiniz?
nschum

2
Seçenek # 2 için artı 1, sadece ayrı bir Ruby olmadan bu ikili dosyaları istiyorsanız, geçerli ve güvenli bir alternatiftir. Ev dizinlerimiz eklenen taşlar için mükemmel bir yerdir ve PATH'a hızlı bir şekilde girilmesi onları erişilebilir hale getirir. Seçenek # 1'i tavsiye edemem çünkü birisi bir gemin üzerine yazıp sistemini Ruby veya Apple'ın yerleşik kodunu kırar ve sonunda nasıl düzeltileceği hakkında SO'ya başka bir soru soracaktır.
Teneke Adam

1
Bu mükemmel bir cevap, ama belki de güncel değil. Sierra'da ihtiyacım olan seçenek --install-dir / usr / local / bin
Ryan Ballantyne

107

Benim durumumda, Brew kullanarak Ruby'yi yeniden kurmak zorunda kaldım . Mücevherleri tekrar kurabildiğim için bu sorunu çözmüş görünüyor.

brew install ruby

Bundan sonra, grafik olarak veya sadece terminalinizi yeniden başlatarak oturumu kapatıp tekrar oturum açmanız gerekir.


Benim için iyi çalıştı! Sanırım birlikte gelen yakut kurulumunda herhangi bir tuhaflıktan kurtulur ... IMO bu en iyi çözüm.
n13

Hangi yakutun `` hangi-bir yakut '' ile çalıştırıldığını söyleyebilirsiniz: `` `` Hangi yakut / usr / yerel / bin / yakut / usr / yerel / bin / yakut / usr / bin / ruby ​​`` / usr / local / bin neden PATH'de iki kez var - brew install rubyzaten orada olsa bile, oraya koyar gibi görünüyor . Muhtemelen / usr / local içindeki ruby, gem'ini root erişimine ihtiyaç duymayan bir yere (aslında mükemmel mantıklı) yüklemek için yapılandırılmıştır.
WallStProg

7
PS Oturumu kapatıp tekrar oturum açmanız gerekiyor (Terminal üzerinden), gem installaksi halde arıza devam edecektir.
WallStProg

Benim için iyi çalıştı. Kabul edilen cevabı bununla birleştirdim. İkinize de teşekkür ederim
youssman

1
Oturumu kapatıp tekrar giriş yapmanız gerekmez. rehashKabuğunuzun rubydaha önce yeni bir şey olduğunu fark ettiğinden emin olmak için koşun $PATH. rubyHenüz kabuk oturumunda koşmadığınız durumda bile bu gerekli olmayacaktır .
Radon Rosborough

38

Bunun nedeni OS X "El Capitan" ın yeni güvenlik işlevi. --user-installSudo kullanmak yerine eklemeyi deneyin :

$ gem install *** --user-install

Örneğin, sahte3'ü yüklemek istiyorsanız sadece şunu kullanın:

$ gem install fake3 --user-install

Evet! Çok teşekkür ederim!
Louis Magnotti

Demleme yaklaşımı ile 30 dakika geçirdikten sonra, kapama terminali vb. Sonunda bu çözüm 10.10.5 üzerinde çalıştı. Lütfen açıkla. hangi yakut sonrası demlemek yüklemek / usr / bin / yakut
vikramvi

1
Wow şimdi sorun geri gem yükleme redcarpet -v '3.3.4' --kullanıcı-yükleme atma hatası UYARI: PATH'nizde /Users/user_name/.gem/ruby/2.0.0/bin yok, gem yürütülebilir dosyalar çalışmaz. Daha önce bu hatayı
alamıyordum



19

Xcode'u en yenisine (v7.0.1) güncellemelisiniz ve her şey normal olarak çalışacaktır.

En yeni Xcode'u yükledikten ve hala çalışmıyorsa gem'i bu şekilde yüklemeyi deneyin:

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

Örneğin:

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

10

OS X El Capitain'e yükseltme yaparken, / usr / local dizini çeşitli şekillerde değiştirilir gibi görünüyor:

  1. kullanıcı izinleri sıfırlanır (bu aynı zamanda Homebrew kullanan kişiler için de bir sorundur)
  2. ikili dosyalar ve sembolikler silinmiş veya değiştirilmiş olabilir

[Düzenle] Yapmanız gereken bir ön şey de var: Xcode'u yükseltin ...

# 1 için çözüm:

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

Bu izinleri çözecektir /usr/localsonra hem yardımcı olacak dizinde gem installve brew install|link|...düzgün çalışıyor komutları.

# 2 çözümü:

Ruby tabanlı sorunlar

/usr/localDizinin izinlerini düzelttiğinizden emin olun (yukarıdaki # 1'e bakın)

Öncelikle gem'inizi kullanarak yeniden yüklemeyi deneyin:

sudo gem install <gemname>

Belirtilen gem'in en son sürümünü yükleyeceğini unutmayın.

Geriye dönük uyumluluk sorunlarıyla karşılaşmak istemiyorsanız, öncelikle hangi gemin hangi sürümünü almak istediğinizi belirlemenizi ve ardından yeniden yüklemenizi öneririz -v version. Sistemin yeni bir capistrano sürümü almayacağından emin olmak için aşağıdaki bir örneğe bakın.

$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ sudo gem install capistrano -v 3.4.0

Demleme temelli sorunlar

Demeti güncelleyin ve formüllerinizi yükseltin

$ brew update
$ brew upgrade

Ayrıca bazılarını manuel olarak yeniden bağlamanız gerekebilir

$ brew link <formula>

3

Söylendiği gibi, sorun "El Capitan" dan bu yana Mac OSX'in bir güvenlik işlevinden kaynaklanıyor.

Varsayılan Ruby sistemi kullanılarak, yükleme işlemi /Library/Ruby/Gems/2.0.0kullanıcı tarafından kullanılamayan dizinde gerçekleşir ve hata verir.

Ruby ortam parametrelerinize şu komutla bakabilirsiniz:

$ gem env

Bir KURULUM REHBERİ ve bir KULLANICI KURULUM REHBERİ vardır. Varsayılan kurulum dizini yerine kullanıcı kurulum dizinini kullanmak için, --user-installbunun yerine sudoasla tavsiye edilmeyen bir yöntem olarak kullanmak yerine parametresini kullanabilirsiniz .

$ gem install myGemName --user-install

Süreçte artık herhangi bir hak sorunu olmamalıdır. Taşlar daha sonra kullanıcı dizinine yüklenir:~/.gem/Ruby/2.0.0/bin

Ancak yüklü mücevherleri kullanılabilir hale getirmek için, bu dizinin yolunuzda mevcut olması gerekir. Göre Ruby'nin sss , aşağıdaki satırı eklemek edebilirsiniz ~/.bash_profileveya~/.bashrc

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

Ardından terminalinizi kapatıp yeniden yükleyin .bash_profileveya veya .bashrc( . ~/.bash_profile)


2

Bu kullandığım çözüm:

Not: Bu düzeltme, başka bir SO sorusuna yazdığım gibi pusula içindir, ancak tüm terminal işlemlerine işlevselliği geri yüklemek için aynı işlemi kullandım, açıkçası yüklediğiniz taşlar farklı, ancak süreç aynı.

Aynı sorunu yaşadım. Bunun nedeni Apple'ın Sistem Bütünlüğü Koruması (SIP) uygulamasıdır. Önce bunu devre dışı bırakmalısınız ...

Kurtarma modunda yeniden başlatma:

Apple logosunu görene kadar Command + R'yi yeniden başlatın ve basılı tutun .

Önyüklendikten sonra üst çubuktan Yardımcı Programlar> Terminal'i seçin .

yazın: csrutil disable

sonra şunu yazın: reboot

Yeniden başlatıldıktan sonra

Terminal yedeklemeyi açın ve komutları girin:

sudo gem uninstall bundler

sudo gem install bundler

sudo gem install compass

sudo gem install sass

sudo gem update --system

Başarısız olan bireysel mücevherlerin düzeltilmesi gerekir, bu nedenle her biri için aşağıdakileri yapın:

Makinemde ilk bağımlılık çalışmıyor, bu yüzden listeledim :

sudo gem pristine ffi --version 1.9.3

Onarılması gereken taşlar listesinde ilerleyin. Tüm düzeltmek için yaklaşık 10 dakika bakıyorsunuz, ancak pusula çalışması için terminal komutları olacak.

Ekran görüntüsü


2

Yüklemeye çalıştığınız mücevher xml kitaplıkları gerektiriyorsa, şunu deneyin:

sudo gem install -n /usr/local/bin  <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

Özellikle, nokogiri gem v 1.6.8 OS X El Capitan üzerine kurulurken bir sorunla karşılaştım

ve bu sonunda benim için çalıştı:

sudo gem install -n /usr/local/bin  nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

Yüklü libxml2 ve libxslt olduğundan emin olmak için şunları yapabilirsiniz:

brew install libxml2 libxslt
brew install libiconv

ve ardından xcode komut satırı araçlarının yüklü olduğundan emin olun:

xcode-select --install 

bu hatayı döndürmelidir:

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

1

RVM'yi yeniden yüklemek benim için çalıştı, ancak daha sonra tüm mücevherlerimi yeniden yüklemek zorunda kaldım:

rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm reload

0

El Capitan'ı yükledikten sonra aynı sorunla karşılaştım, bir symfony projesine sass ve pusula yüklemeye çalıştım, aşağıdaki komut aşağıdaki hatayı döndürdü:

$ sudo gem kurulum pusulası

HATA: Pusula yüklenirken hata oluştu: HATA: Gem yerel uzantısı oluşturulamadı.

/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 'için derleme: Derleyici bir çalıştırılabilir dosya. (Çalışma hatası)

Sonra sass ile yüklemeye çalıştım: $ sudo gem install sass

Bazı googling sonra ben aşağıdaki komutu kullanarak sass yüklemeyi başardı aynı hata mesajı var:

$ sudo gem install -n / usr / yerel / bin sass

Yukarıdaki benim için sass yükleme ile çalıştı ama pusula yüklemek için işe yaramadı. Bir yerlerde birisinin xcode örneğini açıp tekrar kapattığını, sonra da aynı komutu başarıyla uyguladığını okudum. Ben xcode açmaya çalıştı ama yüklü xcode sürümünün El Capitan ile uyumlu olmadığını söyleyen bir mesajla istendi. Daha sonra uygulama mağazasından xcode'u güncelledim, bu kez başarıyla çalıştırılan aşağıdaki komutu yeniden çalıştırdım:

$ sudo gem install -n / usr / yerel / bin pusulası

Sonra $ pusula init çalıştırmak başardı

Şimdi tüm taşlarım çalışıyor ve bazı güzel sass şeyler inşa etmeye devam edebilir :)


0

rm -rf ./vendorSonra bundle installtekrar koşmak zorunda kaldım .


-1

Sudo ile bir şey kurmak istemiyorum. sudo ile başladıktan sonra duramazsın ..

Gems dizinine izin vermeyi deneyin.

sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0

2
Ruby taşlar sisteminin sahipliğini değiştirmeyin. Mac OS herhangi bir şeyi güncellemeye çalıştığında sorunlara neden olabilir.
Teneke Adam

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.