Bir mücevher yükleme veya izin hatası ile başarısız olursa RubyGems nasıl güncelleştirilir


559

Kullanarak gem install mygemveya kullanarak RubyGems güncelleme bir mücevher yüklemeye çalışıyorum gem update --systemve bu hatayla başarısız:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Bunu nasıl çözeceğine dair bir fikri olan var mı?


5
İşte benim çözümüm: stackoverflow.com/questions/34071868/…
LanceP

2
benim hata oluştu çünkü im yapıyor: mücevher güncelleme cocoapods doğru: sudo mücevher güncelleme cocoapods
Abhishek Thapliyal

60
sudo chown -R $USER /Library/Ruby/Gems/
vaskort

2
sadece bu komutu kullanarak benim için çalıştı: sudo gem install mygem
Jayprakash Dubey

1
zsh kabuk kullanıyordum ve ~ / .zshrc yol sorunu oldu. Dosyanın sonunda bu satırı kullandım ve benim için çalıştı: ihracat PATH = "$ HOME / .rbenv / shims: $ PATH"
rosnk

Yanıtlar:


317

/Library/Ruby/Gems/1.8 dizinine yazma izniniz yok.

demek istediğim, oraya yazma izniniz yok.

Bu, Apple tarafından kendi kullanımları için yüklenen Ruby sürümüdür. Ne yaptığınızı biliyorsanız , küçük değişiklikler yapmak uygun olsa da , izinler sorunundan emin olmadığınız için, bu yolda devam etmenin iyi bir fikir olmadığını söyleyebilirim.

Bunun yerine, şiddetle kullanarak içine bakmak öneride bulunuruz rbenv veya RVM değiştirmek / sistem Yakut karışıklık endişesi duymadan / iğ / katlı değişim anlamına, ev dizininde bir sanal alana kurulu ayrı Ruby, yönetmek.

İkisi arasında, rbenv kullanıyorum, ancak geçmişte RVM'yi çok kullandım. rbenv, Ruby kurulumunuzu yönetmeye yönelik daha "pratik" bir yaklaşım benimser. RVM birçok özelliğe sahiptir ve çok güçlüdür, ancak sonuç olarak daha müdahaleci olur. Her iki durumda da, hangisini seçerseniz seçin kurmaya başlamadan önce kurulum belgelerini birkaç kez OKUYUN .


176
Yine de ayrı bir Ruby kütüphanesi kullanmanıza gerek yoktur. Michael'ın yukarıda önerdiği gibi 'sudo'yu önünüze koyun.
serraosays

37
Apple'ın Ruby yüklemesinin sahipliğini değiştirmek iyi bir fikir değildir, çünkü Sistem yüklenir / yükseltilir ve Disk İzlencesi dizinin sahipliğini ve izinlerini otomatik olarak geri alabilir / onarabilir. Bu kullanıcıyı hayal kırıklığına uğratır ve bu dizinlerin yazma izinlerine / sahipliğine sahip olması beklenen işletim sistemini ve kodu hayal kırıklığına uğratabilir. Apple, Ruby'sini kullanan ve belirli bir sürüm veya davranış bekleyebilecek uygulamaları yükler, böylece bunlar kırılabilir. RVM veya rbenv'i kullanmak daha kolay ve daha güvenli olduğunda neden endişelenmeyin ve endişelenmeyin.
Kalay Adam

203
Benim gibi herhangi bir yakut geliştirmeyen ve tüm bu kristal şeylerin ne olduğunu anlamaya çalışırken yarım saat boyunca uğraşmak istemeyenler için. brew install rubybağımlılık sorunlarınızı elma yüklemesini nükleer olmayan temiz bir şekilde çözecektir. sudoİlk kurulumda zaten bir güncelleme yaptıysanız ve ne yaptığınızdan endişe ediyorsanız, bunu şu şekilde geri alabilmelisiniz:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
Louis

21
" I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix" Ve bu sadece insanlar kullanmamalıdır neden daha fazla ağırlık ekler sudoveya chown. İç geçirin ....
Tin Man

55
Çözüldü: brew install rubyTerminali kapatıp tekrar açtıktan sonra El Captain'da .
Fmessina

421

--user-installKullanmak yerine eklemeyi deneyin sudo:

gem install mygem --user-install

4
Cevabınızın neden daha önce gönderilmediğini bilmiyorum. --user-installSeçenek görünüşte olan bir süredir. Keşke bunu daha önce yazmış olsaydın. =)
Michael - Clay Shirky

7
Bunun zirveye çıkması gerekiyor! Modülerde bir izin sistemi uyguladığınız için sudo veya su ile kurulum kötü bir fikirdir ve muhtemelen global olarak kurulmuş paketler, başka şekilde kurulmuş paketler veya diğer projelerin bağımlılıklarıyla çarpışabilir. Rbenv kullanmak başka bir yazılım yüklemenizi gerektirir ve bir karmaşıklık katmanı ekler.
Hubert Grzeskowiak

7
Bu işe yarıyor, ancak şu uyarıda bulunuyor: 'UYARI: PATH'nizde /Users/<username>/.gem/ruby/2.0.0/bin yok, mücevher yürütülebilir dosyaları çalışmaz.' Aşağıdaki bağlantıda (vi kullanmak zorunda kalmadan)
yolunuzu

4
Bu basit ve mantıklı. Bashrc'nizde olmayan yakut yolu ekleyin if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi <br> Kaynak: guides.rubygems.org/faqs/#user-install
Inder Kumar Rathore

1
Bu, Apple'ın (ruby kurulu) sistemini bozabilir mi?
Daniel Springer

93

Gerçekten bir Ruby sürüm yöneticisi kullanıyor olmalısınız.

Bir gem updatekomutu doğru kullanmak bir komutu yürütürken izin sorununuzu önler ve çözer .

Ben rbenv öneririm .

Ancak, Ruby sürüm yöneticisi kullansanız bile aynı hata iletisini alabilirsiniz.

Bunu yaparsanız ve rbenv kullanıyorsanız, ~/.rbenv/shimsdizinin Ruby sisteminin yolundan önce olduğunu doğrulayın .

$ echo $PATH size yükleme yolunuzun sırasını gösterecektir.

Shims dizininizin sistem Ruby bin dizininizden sonra geldiğini görürseniz, ~/.bashrcdosyanızı düzenleyin ve bunu son dışa aktarma PATH komutunuz olarak yerleştirin: export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v hangi Ruby sürümünü kullandığınızı gösterir

Bu şu anda Ruby'nin sistem sürümünü kullandığımı gösteriyor (genellikle iyi değil)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 beni daha yeni, önceden yüklenmiş bir sürüme geçirir (aşağıdaki referanslara bakın).

Bu, Ruby'nin daha yeni bir sürümünü kullandığımı gösteriyor (bu muhtemelen Gem :: FilePermissionError'a neden olmaz)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

Genellikle sudo ile bir gem komutu önceden yazmanız gerekmez. Bunu yapmanız gerektiğini düşünüyorsanız, muhtemelen bir şey yanlış yapılandırılmıştır.

Rbenv hakkında ayrıntılar için aşağıdakilere bakın:


7
Eğer kullanıyorsanız Homebrew kurulum talimatlarınırbenv takip ederseniz, kendiniz geçmekle uğraşmak zorunda kalmamalısınız eval "$(rbenv init -)", yapmanız gereken tek şey kabuk yapılandırmanıza eklemek ve rbenvsizin PATHiçin ayarlamanıza dikkat etmek .

Teşekkürler. Ben hala sistem yakut kullanıyordum 'rbenv global' unutmuş ve gem yükleme başarısız oldu.
Graham Perks

75

Neden yapmıyorsun:

sudo gem update --system

39
Mücevherleri kök olarak kurmak iyi bir fikir değildir. stackoverflow.com/questions/2119064/…
spuder

İle ilgili sorunlar vardı brew upgrade Error: Permission denied.... Bu sorunu düzeltti. Teşekkürler!
Ostap Andrusiv

12
Asla SUDO kullanmayın, bunu yapmanız gerekiyorsa, kurulumunuzda yanlış bir şey yaptınız. Lütfen rbenv veya rvm kullanın.
Chris Hough

14
Neden herkes her zaman sudo'yu bir komutun önüne atmak için izin problemlerine cevap veriyor? Bu en iyi uygulama nasıl?
Steven

hyh: qzc.xcodeproj ylgwhyh $ gem install cocoapods HATA: gem yürütülürken ... (Gem :: FilePermissionError) /Library/Ruby/Gems/2.0.0 dizini için yazma izniniz yok.
ylgwhyh

40

Bu, MacOs Mojave ve MacOs Catalina'daki sorunu temiz bir şekilde düzeltir :

brew install ruby

Ardından GEM_HOME'u kullanıcı dizininize ayarlayın. Terminalde:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

VEYA eğer açıksa Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

2
bunu nasıl buldun? Yaradı!
kuzdu

2
sen adamsın! yüksek beş, gerçekten bir cazibe gibi çalışır. çok teşekkürler.
mrDinkelman

1
Ben koşana kadar bu benim için işe yaramadı xcode-select --install. Uzantıları derlemek için bu gereklidir.
Marc Perrin-Pelletier

Bunu çalıştırdım ve bunların yaptığı değişiklikleri sıfırlamak istiyorum, nasıl geri döneceğini biliyor musun? @Fmessina
KarenAnne

bu işe yarar: dosyanızı ~/.bashrcveya ~/.zshrcdosyanızı düzenleyin, eklenen 3 satırı kaldırın ve ardından source ~/.bashrckomutu tekrar çalıştırın
Fmessina

34

Benim için sorun, rbenvuygun sürümü global olarak ayarlamak ve unutmaktı.

Bu yüzden onu ayarlamak zorunda kaldım rbenv global xxx

Benim durumumda kurdum, 2.0.0-p247bu yüzden komutu vermek zorunda kaldım:

rbenv global 2.0.0-p247
rbenv rehash

Sonra her şey iyi çalışıyordu.


3
Zaten rbenv kullanan ve OSX'i daha yeni bir sürüme yükselttikten sonra taşlar yüklerken bir İzin hatası almaya başlamış olanlar rbenv global 2.1.1için: Örneğin rbenv sürümünü ayarlayıp işe başlamalısınız rbenv rehash. Şimdi gem installkomutunu yeniden çalıştır .
njappboy

1
^ Bu + yeniden başlatma terminali.
XåpplI'-I0llwlg'I -

1
gelecekteki kaşifler: rbenv rehash kullanımdan kaldırıldı github.com/rbenv/rbenv-gem-rehash
TCannadySF

Benim için mükemmel çalıştı! O oldu rbenv rehashben eksikti.
jamesmarkcook

Herhangi bir küresel yakut ayarlanmamış olsaydı, sistemin yakut izinleri olmayacaktı ve rbenv sistem yakutunu kullanacaktı. Bu ile doğrulanacaktır rbenv versions.
Dennis

23

Yollarınızı düzeltmeniz gerekiyor.

Bu düzeltmenin işe yarayıp yaramayacağını belirlemek için aşağıdakileri çalıştırın:

which gem

Bu, izniniz olmayan bir dizinin çıktısını almalıdır:

/usr/bin/gem

Bunu düzeltmek için aşağıdaki adımları uygulayın:

  1. Profilinize kopyalamanız gereken yolu belirleyin:

    rbenv init -

    Çıktının ilk satırı profilinize kopyalamanız gereken satırdır:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Yolu profilinize kopyalayın ve kaydedin.

  3. Profilinizi yeniden yükleyin ( source ~/.zshenvbenim için).

  4. Koş rbenv rehash.

Şimdi çalıştırdığınızda which gem, izinlerine sahip olduğunuz yerel bir yol elde etmelisiniz:

/Users/justin/.rbenv/shims/gem

Benim durumumdaki sorun buydu. Sen dahil etmek gerekir eval "$(rbenv init -)"sizin de ~/.bash_profileyapmak için gerekli tüm değişiklikleri.
nyi

en iyi cevap. profilim .bash_profile olarak adlandırıldı ve dosyayı şu şekilde açabilirsiniz: touch ~ / .bash_profile; ~ / .bash_profile dosyasını açın ve 1. noktada bahsettiğiniz satırı ekleyin
CarmenA


17

Bu benim için çalıştı. Ayrıca, taşları daha önce kök olarak yüklediyseniz, sahipliği size geri değiştirerek bu sorunu giderir (daha iyi güvenlik açısından).

sudo chown -R `whoami` /Library/Ruby/Gems

1
Büyük hayır! /Libraryklasördeki izni asla değiştirmeyin, sistem gelecekteki güncellemelerde bozulabilir. (geç cevap
Raptor

@ Raptor "/ Library" değil, bir alt klasördeki izinleri değiştiriyorum. Benim durumumda, yanlışlıkla mücevherleri kök olarak kurdum, bu yüzden geri almak istedim. Teorik olarak düşünebileceğim ve gözlemlediğim olumsuz bir sonuç yok. Merak ediyorum - bunun neden kötü bir fikir olduğunu düşünüyorsun?
thebiggestlebowski

Yol sistem içindir. MacOS'un diğer güncellemeleri bozulabilir.
Raptor

Değerli taş varsayılan olarak bu konuma yüklenir. Kullanılamazdı, çünkü normal kullanıcım yerine yanlışlıkla root (sudo) olarak kuruldu. Yaptığım şeyin sonucu, ilk etapta $ USER olarak kurduğum gibi oldu. Zarar görmüyorum. Buradaki diğer cevapların çoğu aynı sonucu / çözümü, ancak bunu başarmanın farklı yollarını göstermektedir. Hala sorunu görmüyorum. Taşların / Kütüphane altına kurulmaması gerektiğini mi söylüyorsunuz?
thebiggestlebowski

15

İki yol vardır: rbenv veya RVM kullanın. Her ikisi için de tarifler var. Bunu yapmadan önce, muhtemelen taşlar için yerel belgelerin kurulumunu kapatmak istersiniz.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Sonra:

install rbenv

install ruby-build

Çalıştırmak:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

Bu, yerel dizinlerinize değerli taş sisteminin güncel bir sürümünü yükler. Bu, sistem yapılandırmasına müdahale etmediğiniz anlamına gelir. Bu soruyu soruyorsanız, sistem güvenliğiyle uğraşmamalısınız ve başladığınız sorunu önlemenin kolay bir yoluna sahip olmak yerine, karşılaşabileceğiniz sorunları anlamak için daha uzun süre harcayacaksınız. İşletim sistemi ve programlama hakkında daha fazla bilgi sahibi olduğunuzda InfoSec'i daha sonra öğrenin.

Bunun yerine 'RVM' kullanın: rvm run kurmak için :

rvm install 2.1.2
rvm use 2.1.2
gem update --system

Bu aynı sonuca sahiptir, sistem sürümlerine müdahale etmeyen yerel bir Ruby ve Gem sistemi ile sonuçlanırsınız. Homebrew veya aşırı sürüş sistemi kütüphanelerine vb. Gerek yoktur.


13

Ben daha az mücevher için bu nasıl yapılırsudo :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. ihracat ekleme .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. Ve son olarak şunu ekleyin ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system


Ben kullandım brew install rebenv ruby-build, systemsonra benim dizin sonra? Buna neyin sebep olduğu ve bundan nasıl kurtulacağına dair bir fikrin var systemmı?
7537247

13

Aşağıdaki orijinal cevabımı kullanmadan önce nathanwhy'nin cevabını deneyin . Onun tavsiyesi, --user-installsizinle amaçlamak .bash_profileveya yakut versiyonunuzu belirlemek zorunda kalmadan aynı amacı yerine getirmelidir .


Belirli bir yakut sürümü ile ilgili endişeleriniz yoksa, ağır kaldırmalı yakut çevre yöneticisi seçeneklerini atlayabilir ve şu satırları ekleyebilirsiniz ~/.bash_profile:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

Yol, orijinal çıktısından çalınır gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

Hiçbir sudoing gerekli ve zaten yüklü olan yakut, Apple nezaket kullanabilirsiniz.


3
+1: Bu benim için çok işe yaradı. Herkes kullandığı makinenin sistem yöneticisi değildir ve dolayısıyla herkesin 'sudo', 'chown' veya benzeri araçlara erişimi yoktur. Benzer bir şekilde, insanlar gem'i tüm kullanıcılar tarafından paylaşılan yerine kullanıcının ana dizinindeki bir dizine yükleyen "gem install --user-install" öğesinin farkında olmalıdır.
Bazı Guy

12

rbenv rehashYerel Gem kütüphanemi işaret edecek şekilde yapmam gerekiyordu .

Gem yöneticinizin Sistem Kütüphanesine işaret ettiği anlaşılıyor, bu nedenle, izinlerle uğraşmak yerine yöneticinizin yerel olarak işaret etmesi için "rehash" eşdeğerini yapın.


3
gelecekteki kaşifler: rbenv rehash kullanımdan kaldırıldı github.com/rbenv/rbenv-gem-rehash
TCannadySF

12

Yaşlı ve bilge

Burada söylediğimi yapma, sadece kullandığın zaman dikkatli ol sudo. Muhtemelen rbenvyaptığınız işi izole etmek gibi bir şey kullanmak istersiniz .


uzakta

hakkında bilgi al chown

Komut satırını beğenip beğenmediğinizi bilmiyorum, ancak bu, sisteminize paketleri yükleyen herhangi bir araçla herhangi bir proje üzerinde çalışmayı sağlayacaktır.

chown anlayabildiğim kadarıyla değişim mülkiyeti anlamına geliyor.

Bu cevabı gem installaramamın nedeni , bugün bu hatayı bana atmasıydı:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

Bu kullanmak için mükemmel bir fırsat chown. Gördüğünüz gibi Ruby bize erişmesi gereken dizini vermiş ve sıkça kullanacağı bir dizin gibi görünüyor.

Bu durumda, sorunu çözmek için bilmeniz gereken sadece üç şey vardır, ancak chownçok daha güçlüdür ve size göstereceğimden çok daha fazla esneklik sağlar. Daha fazla bilgi için lütfen alttaki kaynağa bakın.

İki Şey

  1. Kullanıcı adı
  2. rehber

Eğer bir kabukta iseniz kullanıcı adını bulmak kolaydır. Sadece bilgi istemine bakın. Benimki şöyle:

breadly@breadly-desktop:~\Desktop

Geçerli kullanıcı, öğesinden önceki addır @. Dizini hata mesajlarından biliyoruz, ancak iki seçeneğiniz var. Kullanarak izninizi geçerli sürümle sınırlandırabilir ../gems/1.9.1veya kullanarak tüm sürümün değerli taşları için kendinize yazma izni verebilirsiniz ../gems.

Sahipliği gerçekten değiştirme komutu şöyle görünür.

chown -R $(whoami) /absolute/path/to/directory

-RBir bayrak olarak bilinen ve -Rbayrak tipik yinelemeli bir şey yapmak için bir komut söyler, ya da öyle dek üzerinde bir başka deyişle dizinin içerdiği her şey üzerinde komutu gerçekleştirmek ve dizinleri içerdiği her şeyi içinde bulunan ve başka bir şey yok.


Ayrıca, kullanıcınızın hangi gruba ait olduğunu öğrenmek istiyorsanız buna başvurabilirsiniz. stackoverflow.com/questions/350141/…
Breedly

3
Ancak, / usr / local / bin dizinine yüklenmesi gerekiyorsa sahipliklerin değiştirilmesi konusunda dikkatli olmak isteyebilirsiniz.
Breedly

16
Diğerlerinin yanı sıra, / usr, / Library veya / var yollarındaki herhangi bir şeyin sahipliğini değiştirmek kötü bir fikirdir. Dosya ve sürücülerin artık erişilebilir olmaması nedeniyle sistem durabilir ve yükleyici yolların artık root: wheel'e ait olmadığını algılarsa gelecekteki güncellemeler bozulabilir. Hasarın düzeltilmesi gerçekten zor olabilir ve genellikle en iyi işletim sistemini yeniden yükleyerek yapılır. Naif / deneyimsiz kullanıcılar, hangi dosyaların / dizinlerin güvenli olabileceğini anlamak için işletim sistemi hakkında yeterli bilgi sahibi değildir ve bunu evde denememesi konusunda uyarılmalıdır.
Tin Man

Lol bu utanç verici bir cevap. :) Sanırım şimdi daha yaşlı ve daha bilge.
Breedly

11

Mac'imi biçimlendirdim ve önerilen birçok çözüm benim için işe yaramadı. Benim için işe yarayan şu komutlar doğru sırada:

  1. Homebrew'u yükleyin:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Ruby'yi yükleyin:

    brew install ruby
  3. Pusulayı Kur:

    sudo gem install compass

sudoGem ile bir şey kurmak için asla kullanmanıza gerek yoktur . sudoBunu kullanmak , sahip olduğunuz sisteme değil, sistemin sahip olduğu Ruby'ye kurar. Korumalı alanda bir Ruby kullanmak, programlama sırasında yönetimi ve kullanımı çok daha kolaydır, çünkü birden fazla farklı örnek oluşturabilir ve farklı şeyleri deneyebilir ve işiniz bittiğinde bunları yok edebilirsiniz.
Tin Man


6

Benim için çalış:

sudo gem uninstall cocoapods

sudo gem install cocoapods

İnanılmaz Benim için çalıştı aswel! Teşekkürler. Rbenv veya RVM
NaXir

5
Çünkü diğer yorumlarda belirtildiği gibi, değerli taşların kök olarak yüklenmesi tehlikeli bir uygulamadır. Yükleyici, sisteminize tam anlamıyla her şeyi yapabilir.
Bazı Guy

@SomeGuy: "Yükleyici tam anlamıyla her şeyi yapabilir" ... kullanıcının komutu yönetmesi ve sistemi yönetmesi daha olasıdır. Bir yükleyicinin sistemimi bozduğu bir zamanı düşünemiyorum, ancak yaptığım zamanları hatırlayabiliyorum. sudoyeni başlayanların sevdiği bir komuttur, çünkü yanlış şeyi bu kadar kolay yapmayı mümkün kılar ve kullanırken uygun şekilde paranoyak olmayı öğrenmek yıllar alır.
Tin Man

1
En iyi cevap !!!! Bu 2 komutu çalıştırdıktan sonra, lütfen Terminal'i yeniden başlatın ve hepsi bu !!! Çok teşekkürler!!!
nosequeweaponer

4

Ruby sürümünüzün doğru olup olmadığını kontrol edin. Değilse değiştirin.

Bu benim için çalışıyor:

$ rbenv global 1.9.3-p547
$ gem update --system

Bu daha iyi bir çözümdür: update> chown. Teşekkürler! . Ayrıca koşmak zorunda kaldımbrew install ruby
Jose Llausas

4

Rbenv kurulumunu brew install rbenv;

Sonra eval "$(rbenv init -)"~ / .bash_profile (veya MacOS'un ~ / .zshrc) sonuna koyun ;

Yeni bir terminal açın ve çalıştırın gem install ***!


Benim için çalışmadı ❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Max Coplan

2

Bobbdelsol'ün işaret ettiği gibi, rehash benim için çalıştı:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...

çok yakın. henüz "HATA: gem yürütülürken ... (Gem :: FilePermissionError) /Library/Ruby/Gems/2.0.0 dizini için yazma izniniz yok."
JGallardo

1

BAŞARI İLE MacOS Mojave'de test edildi:

  1. Tüm eski yakut sürümlerinizi kaldırın (diyelim ki 2.00 ve 2.3.0 sürümünüz var):

    $ rvm uninstall 2.0.0

    $ rvm uninstall 2.3.0

  2. Yepyeni yakut sürümünü yükleyin:

    $ brew install ruby

  3. Sürümünüz için varsayılan bir takma ad belirleyin:

    $ rvm alias create default ruby

  4. Sisteminizi yeniden başlatın çünkü bu, bilgisayarınızın yeni yüklenen yeni ruby ​​sürümünü yüklemesinin en güvenli yoludur.

Yukarıdaki prosedürü tamamladıktan sonra, herhangi bir gemkomutu başarıyla çalıştırabilirsiniz .


-2

cd / Kütüphane/Ruby/Gems/2.0.0

açın.

sağ tıklama bilgi al

Tıklama kilidi

şifre koy

her şeyi okuma ve yazma yapmak.


1
Lütfen yanıtınızı okunabilirlik açısından biçimlendirmek için zaman ayırın. Araştırmaya ve açıklamaya verdiğiniz çaba işe yarıyor.
Tin Man

-2

kullanıcıya bu klasörde bir şeyler oluşturması için $ whoami verin

sudo chown -R user /Library/Ruby/Gems/2.0.0

Hayır. Bu klasör sisteme ait iyi bir nedenden dolayı, sistem onu ​​kendi amaçları için kullanır. Buna işaret eden bir komut dosyası çalıştırmak iyidir, ancak onunla uğraşmak istiyorsanız korumalı bir Ruby oluşturun ve kullanın.
Tin Man


-4

Değerli taş yükleme veya RubyGems'in güncellenmesi izin hatası ile başarısız oluyor Sonra Bu Komutu Yaz

sudo gem install cocoapods

1
Bu diğer cevaplarda da ele alınmıştır. Sizinkinin yeni bir şey sunduğundan emin olmak için lütfen bir tane oluşturmadan önce diğer yanıtları okuyun.
Tin Man

-6

Bunu kullandım ve çalıştım.

$ sudo chown myuser /var/lib/gems


Kullanmayla ilgili diğer yanıtlardaki yorumlara bakın sudo.
Tin Man

-18

Hatanın nedeni, terminaldeki kök kullanıcı olarak oturum açmamış olmanızdır.

Terminal türünde mac'unuzda zaten root kullanımı etkinse

$ su

Kök kullanıcınız yoksa, aşağıdaki adımları izleyerek etkinleştirmeniz gerekir

  1. Apple menüsünden Sistem Tercihleri… 'ni seçin.
  2. Görünüm menüsünden Kullanıcılar ve Gruplar'ı seçin.
  3. Kilidi tıklayın ve yönetici hesabı olarak kimlik doğrulaması yapın.
  4. Oturum Açma Seçenekleri… seçeneğini tıklayın.
  5. Sağ alt kısımdaki "Düzenle…" veya "Katıl…" düğmesini tıklayın.
  6. “Dizin Yardımcı Programını Aç…” düğmesini tıklayın.
  7. Dizin yardımcı programı penceresinde kilidi tıklatın.
  8. Bir yönetici hesabı adı ve parolası girin, ardından Tamam'ı tıklayın.
  9. Düzen menüsünden Kök Kullanıcıyı Etkinleştir'i seçin.
  10. Hem Parola hem de Doğrula alanlarına kullanmak istediğiniz kök parolayı girin, ardından Tamam'a tıklayın.

Daha fazlası için http://support.apple.com/kb/ht1528

En azından birkaç saat takıldıktan sonra benim için çalışıyor.


Neden aşağı oy? Lütfen bunun nedenini yazabilir misiniz?
Muhammed Arif

8
Taşları kök olarak kurmak kötü bir fikirdir. stackoverflow.com/questions/2119064/…
spuder
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.