Ruby / Homebrew / RVM'nin Yosemite üzerinde çalışmasını nasıl sağlayabilirim?


118

Yosemite'i kurduktan sonra brew veya ruby'i çalıştıramadım.

Brew güncellemesinde şu hatayı alıyordum:

/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

irb'de bu hatayı almak:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in mkdir': Permission denied - /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14 (Errno::EACCES) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:infu_mkdir'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:219:in block (2 levels) in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:inreverse_each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in block in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:ineach'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in mkdir_p' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:210:inwrite_gem_make_out'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:132:in build_error' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:171:inrescue in build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:156:in build_extension' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:198:inblock in build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in each' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1436:in block in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/user_interaction.rb:45:inuse_ui'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1434:in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/stub_specification.rb:60:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/basic_specification.rb:56:in contains_requirable_file?' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:925:inblock in find_inactive_by_path'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in each' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:infind'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in find_inactive_by_path' from /Library/Ruby/Site/2.0.0/rubygems.rb:185:intry_activate'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:150:in block in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:158:inblock in each_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:167:in each_sublocale' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:157:ineach_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:145:in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:124:infind'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:108:in load' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:32:ininitialize'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:in new' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:ininit_config'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:16:in setup' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.rb:380:instart'
from /usr/bin/irb:12:in `'

Yanıtlar:


281

Bu hata aşağıdaki adımlarla kolayca düzeltilebilir:

1) Açık terminal

2) Tür nano /usr/local/Library/brew.rb

3) İlk satırda "1.8 ″ 'yi" Mevcut "olarak değiştirin, bu nedenle şöyle görünmelidir:

#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0

http://blog.ic3man.gr/2014/06/homebrew-ruby-bad-interpreter-no-such-file-or-directory/ aracılığıyla


14
Bu değişikliği yaptığımda, yosemite çalıştırıyor olmama rağmen "Homebrew, Leopard veya üstü gerektirir. Tiger desteği için bkz: github.com/mistydemeo/tigerbrew " hatası alıyorum
bilimsel

4
bu maalesef Please, commit your changes or stash them before you can merge.denediğinizde bir hata veriyor brew update.
Naoise Golden

10
Güncel için "C" büyük harfle yazılmalıdır#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo

@Diablo Bunun 10.10.1'de güncellendiğine inanıyorum. Önceki versiyonda "C" büyük harfle yazılmamıştı. Teşekkürler.
raz0r

1
Ben de aldım Homebrew requires Leopard or higher- aşağıdaki cevabı takip ettim xcode komut satırı araçlarını yükle ve şimdi çalışıyor: stackoverflow.com/a/24225960/1062936
greg

39

Yosemite'ye güncelledim ve daha sonra brewbozuk olduğunu öğrendim .

/usr/local/bin/brew: /usr/local/Library/brew.rb: 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

Demlemek için henüz herhangi bir değişiklik yapmadıysanız, işte size tavsiye ettiğim şey. Aksi takdirde aşağıda daha fazlasını okuyun.

  1. cd /System/Library/Frameworks/Ruby.framework/Versions/
  2. sudo ln -s Current 1.8
  3. brew update
  4. sudo unlink 1.8

Demleme dosyalarında zaten değişiklikler yaptınız ve bir git karmaşasına mı takıldınız?

Düzenlemeye çalıştım /usr/local/Library/brew.rbancak git depomdaki yerel değişiklik brew updategüncellemeleri indirmeyi engelliyordu . Bu sayfada ve diğer sitelerden bahsedilen diğer bazı çözümleri denedim ve sonunda bir git karmaşası ile sonuçlandı ve tek yapmak istediğim, yapmak için yaptığım her şeyi geri almaktı.

Değişikliğimi yaptım ama işleri daha da kötüleştirdi. Sonunda taahhütlerimi geri almak zorunda kaldım git reset --hard HEAD~1ve doğru taahhüde gelene kadar. Ben de bir sürü versiyonsuz dosyam vardı (/ usr / Local içindeki dosya izinlerini değiştirdim), bu yüzden git clean -f -dtüm versiyonsuz dosya ve dizinleri kaldırdım ve herhangi bir değişiklik yapmadan önce başladığım yere geri döndüm.


3
Bu cevap işe yaradı (git karışıklığını geri alma dahil) en çok oylanan cevap beni git problemiyle bıraktı.
Steve M

Sisteminizi yükselttikten sonra çok kullanışlı! Teşekkürler
kodlama bağımlısı

Bu, köksüz mod nedeniyle El Capitan'da "ln: işleme izin verilmiyor" ile başarısız olur. Bir geçici çözümü burada bulabilirsiniz: apple.stackexchange.com/questions/196224/…
Jorge Ortiz

37

Düzeltme adımları:

  1. Xcode 6 için komut satırı araçlarını yükleyin

  2. Demlemeyi yeniden yükleyin:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Demleme kurulduktan sonra rvm çalışacaktır:

    rvm install ruby

Benim için çalıştı yahoo!


Ruby'yi hazırladım ve çalıştırıyorum, ancak bu hala benim için çalışmıyor: stackoverflow.com/questions/24113251/…
eden

Rvm ve nginx'i tamamen kaldırdım ve Xcode 6 geliştirici araçlarını yükledikten sonra yeniden yükledim. Şimdi bir cazibe gibi çalışıyor.
2014

1
Bu benim için de çalıştı, sadece adım 1 için bu komutu çalıştırmayı açıklığa kavuşturmak istedim: xcode-select --install
James Toomey

33

Komut dosyasını düzenlemek brew updateişe yaramayacağı anlamına gelir ; izlenen dosyalarda git pull, başarısız olmasına neden olan yerel düzenlemeler vardır .

Daha temiz olduğundan şüphelendiğim bunu yaptım:

cd /usr/local/Library
git pull -q origin refs/heads/master:refs/remotes/origin/master

Şikayet yok brew doctor.


Bunu yaptığımda, birleştirmeden önce taşınması gereken izlenmeyen dosyalar hakkında bir hata alıyorum. Bunların tümü Library / Formula / içindeki dosyalardır.
2014

Hiçbir şey düzenlemediğini varsayarsak, bu benim başıma geldiğinde bu, çalıştırmam brew doctorve bazı talimatları izlemem gerektiği anlamına gelir . Sorun şu ki brew doctor, eğer buradaysan muhtemelen senin için çalışmıyor. Sadece yapabilir git stashve devam edebilirsiniz.
Otto

7

Bu, diğer insanların gönderilerinden gelen yanıtların yanı sıra Google'da biraz araştırma yapmanın bir araya gelmesidir, ancak bunu koyacağımı düşündüm, böylece eksiksiz bir yanıt tek bir yerde. Özellikle bu, işlerin şimdi çalışmasını sağlar, ancak aynı zamanda normal şekilde demleme güncellemeleri yapmanızı ve her şeyi yeniden temizlemenizi sağlar.

  1. /Usr/local/Library/brew.rb dosyasını açın (emacs / vi / nano / ne olursa olsun)
  2. Okumak için ilk satırı değiştirin: #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. Sadece o satırdaki "1.8" i "Geçerli" olarak değiştiriyorsunuz (büyük "C" yi sakladığınızdan emin olun, aksi takdirde git daha sonra kafanız karışacaktır).
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(veya sudo brew updatedemlemeniz yalnızca sudo ile sistem değişiklikleri yapacak şekilde ayarlanmışsa)

Kredi: / usr / local klasörünüzde yapmamanızı tavsiye etsem de, bunların çoğu buradan geldi git commit -am.


Benim için işe yarayan tek çözüm bu. Bir sonraki uygulamam için Ruby ve Rails'ten uzaklaşmamın nedeni, bunun gibi sık sık görülen süper çirkin karmaşalar.
Deborah

3

Daha önce söylendiği gibi: 1) Akıma geçin 2) xcode 6 yükleyin

Şimdi brew ve ruby ​​ile ilgili başka sorunlarınız varsa, bunun yardımcı olması gerekir: Bir şekilde brew 1.8 sürümünde ruby'e ihtiyaç duyar, bu yüzden klasörü oluşturun:

sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin

ve bir sembolik bağlantı oluşturun:

sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

Teşekkürler! Bu benim için işe
alejandromp


1

Bunu aşağıdaki gibi düzelttim :

  1. sudo chown -R $(whoami):admin /usr/local
  2. cd $(brew --prefix) && git fetch origin && git reset --hard origin/master


0

Not: Aşağıdakileri yalnızca tamamen başarısız bir duruma düşerseniz yapın, çünkü bu çok TEHLİKELİDİR

Örnek olarak almaya devam ettim

$ sudo ln -s Mevcut 1.8

$ brew güncellemesi

/usr/local/Library/brew.rb:18:in ': tanımsız yöntem yardımı?' ["güncelle"] için: Dizi (NoMethodError)

Bunu anlıyorum… (hangi komutun komutla “güncelle” yi değiştirmesi önemli değil) Bir arkadaş /usr/localklasörü isteyerek sorunu çözdüm . Daha sonra /usr/localklasörümün bir yedeğini aldım .

sudo mv / usr / local /usr/local.orig

Sonra /usr/localbenimkine taşıdım

sudo mv ~ / Yüklemeler / local / usr / local

Not: Büyük olasılıkla bazı verileri kaybedeceksiniz, bu nedenle bir yedekleme yaptığınızdan emin olun.


-1

Ruby'yi paket yöneticilerini kullanarak kurmaya çalışırken sorunlar yaşadım. Adil olmak gerekirse, onlarla çok az deneyime sahip olduğumu kabul ediyorum ve diğer yanıt verenlerin çoğunun yaptığı gibi daha derine inmek için çaba sarf etmedim. Tembelim ve çoğu opsys seçeneği ve birçok paket için mevcut bir ikili yükleyiciyi kullanmayı tercih ediyorum. Ne yazık ki Ruby bir tane sağlamıyor gibi görünüyor.

Ruby-build kurulumunu kolay buldum (bağımsız - eklenti değil) ve Ruby'yi kaynaklardan hatasız olarak oluşturdu ve istediğim yere yerleştirdi.

Bingo - kolay :) Bu ikna zorluğu çeken paket yöneticisi bizler için iyi bir alternatif gibi görünüyor.

Charlie

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.