จะทำให้ Ruby / Homebrew / RVM ทำงานกับ Yosemite ได้อย่างไร?


118

หลังจากติดตั้ง Yosemite ฉันไม่สามารถเรียกใช้การชงหรือทับทิมได้

ฉันได้รับข้อผิดพลาดนี้ในการอัปเดตเบียร์:

/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:

/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 `'

คำตอบ:


281

ข้อผิดพลาดนี้สามารถแก้ไขได้อย่างง่ายดายในขั้นตอนต่อไปนี้:

1) เปิดเทอร์มินัล

2) ประเภท nano /usr/local/Library/brew.rb

3) ในบรรทัดแรกเปลี่ยน“ 1.8″ เป็น“ ปัจจุบัน” ดังนั้นควรมีลักษณะดังนี้:

#!/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/


14
เมื่อฉันทำการเปลี่ยนแปลงนี้ฉันได้รับข้อผิดพลาด "Homebrew ต้องการ Leopard หรือสูงกว่าสำหรับการสนับสนุน Tiger โปรดดู: github.com/mistydemeo/tigerbrew " แม้ว่าฉันจะใช้งานโยเซมิตีก็ตาม
Scientiffic

4
ซึ่งทำให้เกิดPlease, commit your changes or stash them before you can merge.ข้อผิดพลาดเมื่อคุณพยายามที่จะbrew updateโชคร้าย
Naoise Golden

10
"C" ต้องเป็นตัวพิมพ์ใหญ่สำหรับ Current#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo

@Diablo ฉันเชื่อว่าสิ่งนี้ได้รับการอัปเดตใน 10.10.1 ในเวอร์ชันก่อนหน้านี้ "C" ไม่ใช่ตัวพิมพ์ใหญ่ ขอบคุณ
raz0r

1
ฉันยังได้รับHomebrew requires Leopard or higher- ฉันทำตามคำตอบด้านล่างติดตั้งเครื่องมือบรรทัดคำสั่ง xcode และตอนนี้ใช้งานได้: stackoverflow.com/a/24225960/1062936
greg

39

ฉันอัปเดตเป็น Yosemite และพบในภายหลังว่าbrewเสีย

/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

หากคุณยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับการชงนี่คือสิ่งที่ฉันแนะนำ หรืออ่านเพิ่มเติมด้านล่าง

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

ทำการเปลี่ยนแปลงในการชงไฟล์แล้วและติดอยู่ในความยุ่งเหยิงของคอมไพล์หรือไม่?

ฉันพยายามแก้ไข/usr/local/Library/brew.rbแต่การเปลี่ยนแปลงในเครื่องที่ git repo ของฉันทำให้ไม่สามารถbrew updateดึงการอัปเดตลงได้ ฉันลองใช้วิธีแก้ปัญหาอื่น ๆ ที่กล่าวถึงในหน้านี้และจากไซต์อื่น ๆ และจบลงด้วยความยุ่งเหยิงของคอมไพล์และสิ่งที่ฉันต้องการจะทำคือเลิกทำทุกอย่างที่ฉันทำเพื่อชง

ฉันมุ่งมั่นที่จะเปลี่ยนแปลง แต่มันทำให้สิ่งต่างๆแย่ลง ในที่สุดฉันก็ต้องยกเลิกการกระทำของฉันและgit reset --hard HEAD~1จนกว่าฉันจะได้กระทำที่ถูกต้อง ฉันมีไฟล์ที่ไม่ได้แปลงเป็นระเบียบด้วย (ฉันเปลี่ยนการอนุญาตไฟล์ใน / usr / Local) ดังนั้นฉันจึงทำการgit clean -f -dลบไฟล์และไดเร็กทอรีที่ไม่ได้เวอร์ชันทั้งหมดและพาฉันกลับไปที่จุดเริ่มต้นก่อนที่จะทำการเปลี่ยนแปลงใด ๆ


3
คำตอบนี้ใช้งานได้ (รวมถึงการเลิกทำระเบียบคอมไพล์) โดยที่คำตอบที่ได้รับการโหวตสูงสุดทำให้ฉันมีปัญหาคอมไพล์
Steve M

มีประโยชน์มากหลังจากอัปเกรดระบบของคุณ! ขอบคุณ
การเขียนโค้ดติด

สิ่งนี้ล้มเหลวใน El Capitan ด้วย "ln: operation not per allowed" เนื่องจากโหมดไม่รูท คุณสามารถหาวิธีแก้ปัญหาได้ที่นี่: apple.stackexchange.com/questions/196224/…
Jorge Ortiz

37

ขั้นตอนในการแก้ไข:

  1. ติดตั้งเครื่องมือบรรทัดคำสั่งสำหรับ Xcode 6

  2. ติดตั้งชงอีกครั้ง:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. เมื่อติดตั้ง brew แล้ว rvm จะทำงาน:

    rvm install ruby

ทำงานให้ฉัน yahoo!


ฉันเริ่มใช้งานทับทิมได้แล้ว แต่ยังใช้ไม่ได้สำหรับฉัน: stackoverflow.com/questions/24113251/…
eden

ฉันลบ rvm และ nginx ออกทั้งหมดและติดตั้งใหม่หลังจากติดตั้งเครื่องมือสำหรับนักพัฒนา Xcode 6 ตอนนี้มันทำงานอย่างมีเสน่ห์
Wout

1
สิ่งนี้ใช้ได้ผลสำหรับฉันเช่นกันเพียงแค่ต้องการชี้แจงเพื่อเรียกใช้คำสั่งนี้สำหรับขั้นตอนที่ 1: xcode-select --install
James Toomey

33

การแก้ไขสคริปต์หมายความว่าbrew updateจะไม่ทำงาน มีการแก้ไขไฟล์ที่ติดตามในเครื่องซึ่งทำให้เกิดความgit pullล้มเหลว

ฉันทำสิ่งนี้ซึ่งฉันคิดว่าสะอาดกว่า:

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

brew doctorมีการร้องเรียนจากไม่มี


เมื่อฉันทำเช่นนี้ฉันได้รับข้อผิดพลาดเกี่ยวกับไฟล์ที่ไม่ได้ติดตามซึ่งจะต้องถูกย้ายก่อนที่จะรวม นี่คือไฟล์ทั้งหมดใน Library / Formula /
septerr

สมมติว่าคุณไม่ได้แก้ไขอะไรเลยเมื่อสิ่งนั้นเกิดขึ้นกับฉันหมายความว่าฉันต้องเรียกใช้brew doctorและทำตามคำแนะนำบางอย่าง ปัญหาที่brew doctorอาจไม่ได้ผลสำหรับคุณถ้าคุณอยู่ที่นี่ คุณอาจจะสามารถgit stashดำเนินการต่อไปได้
Otto

7

นี่เป็นการรวมกลุ่มจากคำตอบจากโพสต์ของคนอื่นรวมถึงการขุดคุ้ยใน Google แต่ฉันคิดว่าฉันจะรวบรวมคำตอบทั้งหมดไว้ในที่เดียว โดยเฉพาะสิ่งนี้ทำให้สิ่งต่างๆทำงานได้ในขณะนี้ แต่ยังช่วยให้คุณสามารถอัปเดตการชงได้ตามปกติและทำให้ทุกอย่างสะอาดอีกครั้ง

  1. เปิด /usr/local/Library/brew.rb (emacs / vi / nano / อะไรก็ตาม)
  2. เปลี่ยนบรรทัดแรกเพื่ออ่าน: #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. คุณแค่เปลี่ยน "1.8" ที่อยู่ในบรรทัดนั้นเป็น "ปัจจุบัน" (ตรวจสอบให้แน่ใจว่าคุณใช้ตัวพิมพ์ใหญ่ "C" มิฉะนั้นคอมไพล์จะสับสนในภายหลัง)
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(หรือsudo brew updateหากการชงของคุณถูกตั้งค่าให้ทำการเปลี่ยนแปลงระบบด้วย sudo เท่านั้น)

เครดิต: สิ่งนี้มากมายมาจากที่นี่แม้ว่าฉันจะแนะนำให้ทำgit commit -amในโฟลเดอร์ / usr / local ของคุณ


นี่เป็นทางออกเดียวที่ใช้ได้ผลสำหรับฉัน เป็นเพราะความยุ่งเหยิงที่น่าเกลียดบ่อยๆเช่นนี้ทำให้ฉันย้ายออกจาก Ruby and Rails สำหรับแอปถัดไปของฉัน
Deborah

3

เช่นเดียวกับที่กล่าวไว้ก่อนหน้านี้: 1) เปลี่ยนเป็นปัจจุบัน 2) ติดตั้ง xcode 6

หากตอนนี้คุณมีปัญหาเพิ่มเติมเกี่ยวกับการชงและทับทิมสิ่งนี้จะช่วยได้: อย่างไรก็ตามการชงต้องใช้ทับทิมในเวอร์ชัน 1.8 ดังนั้นให้สร้างโฟลเดอร์:

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

และสร้าง symlink:

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

ขอบคุณ! นี่เป็นทางออกเดียวที่ใช้ได้ผลสำหรับฉัน;)
alejandromp

2

ดูบทช่วยสอนนี้ที่นี่: http://ryantvenge.com/2014/09/ruby-homebrea-yosemite/

มันได้ผลสำหรับฉัน!


แม้ว่าลิงก์นี้อาจตอบคำถามได้ แต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์เพื่อการอ้างอิง คำตอบแบบลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าที่เชื่อมโยงเปลี่ยนไป
bummi



0

หมายเหตุ: ดำเนินการด้านล่างเฉพาะเมื่อคุณอยู่ในสถานะล้มเหลวโดยสิ้นเชิงเนื่องจากเป็นอันตรายมาก

เป็นตัวอย่างที่ฉันได้รับ

$ sudo ln -s ปัจจุบัน 1.8.0

อัปเดต $ brew

/usr/local/Library/brew.rb:18:in ': วิธีที่ไม่ได้กำหนดช่วยได้ไหม' สำหรับ [“ update”]: Array (NoMethodError)

ฉันได้รับสิ่งนี้ ... (ไม่ว่าคำสั่งใดเพียงแค่เปลี่ยน "อัปเดต" ด้วยคำสั่ง) ฉันแก้ปัญหาโดยขอ/usr/localโฟลเดอร์บัดดี้ จากนั้นฉันได้ทำการสำรองข้อมูล/usr/localโฟลเดอร์ของฉัน

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

จากนั้นฉันก็ย้ายเขา/usr/localไปที่เหมือง

sudo mv ~ / ดาวน์โหลด / local / usr / local

หมายเหตุ: คุณอาจสูญเสียข้อมูลบางส่วนดังนั้นโปรดทำการสำรองข้อมูล


-1

ฉันมีปัญหาในการพยายามติดตั้ง Ruby โดยใช้ตัวจัดการแพ็คเกจ ด้วยความเป็นธรรมกับโปรแกรมเหล่านี้ฉันยอมรับว่ามีประสบการณ์กับพวกเขาน้อยและไม่ได้พยายามเจาะลึกลงไปเหมือนที่ผู้ตอบคนอื่น ๆ ส่วนใหญ่ทำ ฉันขี้เกียจและชอบใช้ตัวติดตั้งไบนารีสำหรับตัวเลือก opsys ส่วนใหญ่และแพ็คเกจมากมาย น่าเสียดายที่ Ruby ดูเหมือนจะไม่จัดหามาให้

ฉันพบว่า Ruby-build ติดตั้งได้ง่าย (แบบสแตนด์อะโลน - ไม่ใช่ปลั๊กอิน) และสร้าง Ruby จากแหล่งที่มาโดยไม่มีข้อผิดพลาดและวางไว้ในที่ที่ฉันต้องการ

บิงโก - ง่าย :) นี่เป็นทางเลือกที่ดีสำหรับพวกเราจากผู้จัดการแพ็คเกจที่ท้าทายการชักชวน

ชาร์ลี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.