/Library/Ruby/Gems/2.3.0 dizini için yazma izniniz yok. (mac kullanıcısı)


134

Yapmam gereken şey aşağıdadır.

Özellikleri çalıştırmak için RSpec'i yüklemeniz gerekir. İlk önce, gem install bundlerprojenizin kök dizininde çalıştırın . Ardından koşun bundle install. Tek bir spec dosyası çalıştırmak için böyle bir komutu çalıştırın: bundle exec rspec spec/00_hello_spec.rb. Tüm özellikleri aynı anda çalıştırmak için çalıştırın bundle exec rspec.

Böylece, gem install bundlerTerminal'e yazdım ve şu hatayı aldım:

/Library/Ruby/Gems/2.3.0 dizini için yazma izniniz yok.

ve bu atomdaki proje dosyasındaydı

source "https://rubygems.org"
gem "rspec", "~> 3.2.0"

Sorum şu:

Görünüşe göre terminal bana cevap veriyor çünkü yakutta hiçbir şeyi değiştirmemem gerekiyor ve bundle installatomun içine mi ihtiyacım var? Biri bana atomu nasıl kullanacağımı veya atomda herhangi bir şeyi nasıl çalıştıracağımı söyleyebilir mi?

Yanıtlar:


245

Güncelleme: O zamandan beri Ruby mücevherlerini bir Mac'e kurmanın çeşitli yolları hakkında çok detaylı bir açıklama yazdım. Bir komut dosyası kullanma konusundaki orijinal tavsiyem hala geçerli, ancak makalem daha fazla ayrıntıya giriyor: https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/

Mac'inizle birlikte gelen Ruby sürümüyle macOS'in hiçbir şeyi değiştirmenize izin vermeyeceği konusunda haklısınız. Bununla birlikte, bundlerApple tarafından sağlanan ile karışmayan ayrı bir Ruby sürümü kullanmak gibi değerli taşlar kurmak mümkündür .

sudoNe yaptığınızı bilseniz bile, mücevherleri yüklemek için kullanmak veya sistem dosyalarının ve dizinlerin izinlerini değiştirmek kesinlikle önerilmez. Bu kötü tavsiyeyi vermeyi kesebilir miyiz lütfen?

Çözüm iki ana adımı içerir:

  1. Mac'inizle birlikte gelenle çakışmayan ayrı bir Ruby sürümü kurun.
  2. Senin güncelleyin PATHyeni Ruby sürümünün yeri ilk olacak şekilde PATH. Dizinlerin listesi ve bilgisayarın çalıştırılabilir programları bulmak için bunları arama sırasına PATH. Eğer yazarsanız echo $PATHTerminal'de, bir nokta ile ayrılmış dizinlerin listesini göreceksiniz.

Ruby'yi bir Mac'e kurmanın birkaç yolu vardır. Önerdiğim ve istediğim en iyi yol, çeşitli kurulum talimatlarında daha yaygın olsaydı, sizin için uygun bir Ruby ortamı kuracak otomatik bir komut dosyası kullanmaktır . Bu, kullanıcının bir dizi şeyi manuel olarak yapmasına neden olan yetersiz talimatlar nedeniyle bir hatayla karşılaşma olasılığını büyük ölçüde azaltır ve gerekli tüm adımları anlamayı kendilerine bırakır.

İzleyebileceğiniz diğer yol, her şeyi manuel olarak yapmak ve en iyisini ummak için fazladan zaman harcamaktır. Öncelikle, diğer araçları ve macOS uygulamalarını kurmayı kolaylaştıran Homebrew'u kurmak isteyeceksiniz .

Daha sonra, Ruby'nin ayrı bir sürümünü kurmanın en popüler 4 yolu:

Aynı anda birden fazla Ruby sürümüne ihtiyacınız yoksa (macOS ile birlikte gelen sürümün dışında)

  • Homebrew - kurulduktan brew install rubysonra Ruby'yi kurun , ardından PATHçalıştırarak güncelleyin echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile, ardındansource ~/.bash_profile

Pek çok Ruby sürümü arasında kolayca geçiş yapma esnekliğini istiyorsanız

  • chruby ve ruby-install - kişisel önerilerim ve yukarıda belirtilen komut dosyası tarafından otomatik olarak yüklenenler. Bunlar Homebrew ile kurulabilir.

  • rbenv - Homebrew ile kurulabilir

  • RVM

Artık Ruby'nin sistem dışı sürümünü kullandığınızı kontrol etmek için aşağıdaki komutları çalıştırabilirsiniz:

which ruby

Başka bir şey olmalı /usr/bin/ruby

ruby -v

2.3.7 dışında bir şey olmalıdır. Bugün itibariyle, 2.6.1 en son Ruby sürümüdür.

Ruby'nin bu yeni sürümünü yükledikten sonra, artık paketleyiciyi yükleyebilirsiniz:

gem install bundler

3
Benim gibiyseniz ve zsh (veya bash dışında başka bir kabuk) kullanıyorsanız, fazladan bir adım var! Yükledikten sonra rbenvyapmanız gerekir echo 'eval "$(rbenv init -)"' >> ~/.bash_profile. Kaynak
Marlo

2
/ Usr / local dizininde bir izin hatasıyla karşılaşırsanız, çalıştırın sudo chown -R $(whoami) $(brew --prefix)/*. Daha fazla bilgi için bu konuyu görün
Anas Tiour

5
Bu çok faydalıdır ... Doğru cevap olarak ayarlanmalıdır.
Spencer Müller Diniz

4
MacOS insanları zsh'a geçmeye teşvik ettiğinden, ~ / .bash_profile'daki değişikliği ~ / .zshrc'ye de uygulamalısınız.
Adam_G

1
@stevec Belki rbenv kurulum talimatlarındaki bazı adımları kaçırdınız? Ya da belki Terminalinizden çıkıp yeniden başlatmadınız mı? Buradaki rbenv talimatlarını takip ederdim: github.com/rbenv/rbenv#installation . Kullanarak geri döndük açık Eğer varsa chrubybunun yerine, ben çok bir komut dosyası kullanarak tavsiye bunun gibi sizin için setler her şey, o: github.com/monfresh/install-ruby-on-macos . Bu betiği çalıştırmadan önce rbenv'i kaldırmanız gerekir: github.com/rbenv/rbenv#uninstalling-rbenv
monfresh

72

Çalıştırmak istemiyorsanız, sudohomebrew kullanarak Ruby'yi kurun

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails

Sen eklemek isteyebilirsiniz export GEM_HOME="$HOME/.gem"sizin için ~/.bash_profileya da .zshrckullandığınız takdirde zsh


4
Catalina OS'de yardımcı olmadı 😐
Efrat Levitan

Cevabımı güncelledi
STIKO

Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
Efrat Levitan

Bir railskomut çalıştırmaya çalışıyormuşsunuz gibi görünüyor . Sahip olduğum son iki komut railskomutu çalıştırmıyor . Projenizin dışında yeni bir terminal açmaya çalışın, ardından cevabımın son iki satırını tek tek kopyalayın.
STIKO

unutma source ~/. zshrc(veya ~/.bash_profile)
gordinmitya

68

--user-installAşağıdaki komutu çalıştıran parametreyi kullanarak benim için çalıştı :

gem install name_of_gem --user-install

Sonra onu alıp kurmaya başladı.

Düzenle

Hala yükleyemediğim bir mücevher vardı (Ruby geliştirme kitinin Ruby.h başlıklarını veya başka bir şeyi gerektiriyordu), sonra farklı sürüm yöneticilerini denedim, ancak bir şekilde bu, belgelerde belirtildiği gibi gerçekten işe yaramadı. sadece kurmak ve değiştirmek için (sadece sürümleri değiştirmedi). Daha sonra tüm kurulu sürüm yöneticilerini kaldırdım ve daha sonra brew install rubyen son sürümü yükledim ve PATH değişkenini de ayarladım. (Demlemek için yakut kurulumundan sonra bahsedilecektir), işe yaradı.


6

Genellikle rbenvveya gibi bir sürüm yöneticisi kullanmanız önerilir rvm. Aksi takdirde, kurulu Taşlar rootdiğer kullanıcılar için olduğu gibi mevcut olacaktır .

Ne yaptığını biliyorsan kullanabilirsin sudo gem install.


6

MacOS Catalina'yı yükledikten sonra aynı sorunla karşılaştım. Aşağıdaki komutu ve çalışmasını denedim.

sudo gem update

3

Çalıştır şunu

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

Talimatları izleyin (benim durumumda ~ / .zshrc'ye ekleyin );)


Ayrıca önemli: Değişiklikler yalnızca konsolunuzu yeniden başlattığınızda etkili olur. İki seçenek

  • Giriş source <modified file>
  • kapat ve tekrar aç

Catalina'ya yükselttim ( .bash_profile.zshrc
bash'den zsh'ye geçiyor

2

Ruby'yi ayrı olarak kurduysanız ve rbenv / rvm kullanarak Ruby'yi kurduysanız, budler farklı sürümlere işaret edebilir.

Deneyin

gem env home

ve

ruby -v

her ikisi de aynı sürüme işaret etmelidir. rbenv / rvm kullanarak ruby ​​yüklediğinizi kontrol edin, eğer öyleyse ayrıca kurduğunuz Ruby sürümünü silin.

Gem'in çalışması için rbenv'i çağırmalısınız,

rbenv shell <ruby version> 

ve

rbenv global <ruby version>

RVM'nin nasıl çalıştığından emin değilim. Bunun işe yarayıp yaramadığını bana bildirin.


kabuğu ve genel ayarı eksikti. Neden rbenv talimatlarında değil 🤔
feitla

Emin değilim, bunun neden kaçırıldığını denedikten sonra öğrenebildim.
Bharathan Kumaran

0

Mac için Çözüm

  1. RVM'yi son Ruby sürümü ile kurun / güncelleyin

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

  2. Paketleyiciyi yükleyin

    gem install bundler


bu iki komuttan sonra (sudo) gem install ....çalışmaya başladı


ayrıca belirtmeniz gerekebilirrvm use <version>
ObjectNameDisplay

-1

Bu benim için Mac'te çalıştı

sudo chown -R $ (whoami) $ (demlemek - önek) / *


-1

Mojave ile kullanıyorum rbenv, bu çözüm benim için çalışıyor:

$ vi ~/.bash_profile

Bu satırı dosyaya ekleyin:

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

-2

Karşılaştığım sorunlar: - /Library/Ruby/Gems/2.6.0 dizini için yazma izniniz yok.

Çözüm benim için çalıştı: sudo gem install rails -v 6.0.0



-3

mac kullanıcıları için sudo ex sudo gem install cocoapods kullanın


Bu komut soruyu çözebilirken, sorunun nasıl ve neden çözüldüğüne dair bir açıklama da dahil olmak üzere , gönderinizin kalitesini artırmaya gerçekten yardımcı olur ve muhtemelen daha fazla oy almanıza neden olur. Sadece şu anda soran kişi için değil, gelecekte okuyucular için soruyu yanıtladığınızı unutmayın. Açıklamalar eklemek ve hangi sınırlamaların ve varsayımların geçerli olduğuna dair bir gösterge vermek için lütfen yanıtınızı düzenleyin .
Brian
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.