จะอัพเดต Ruby Version 2.0.0 เป็นเวอร์ชั่นล่าสุดใน Mac OSX Yosemite ได้อย่างไร?


377

ฉันต้องการอัปเดตทับทิมเวอร์ชันของฉันจาก 2.0.0 เป็นเวอร์ชั่นล่าสุดฉันไม่สามารถใช้อัญมณีบางอย่างได้เนื่องจากเวอร์ชั่นของฉันไม่ได้รับการอัพเดต ฉันใช้ Homebrew เพื่อติดตั้ง Ruby มาแล้วฉันจะอัพเดตเวอร์ชั่น Ruby ได้อย่างไร


จะเกิดอะไรขึ้นเมื่อคุณพิมพ์which rvmหรือwhich rbenvในบรรทัดคำสั่ง
MageeWorld

@ChuchaC โปรดดูที่นี่และที่นี่
vhristoskov

1
ดูเหมือนว่าbrew install rubyเพียงพอ ตรวจสอบที่นี่
Venugopal

คำตอบ:


709

เปิดเทอร์มินัลของคุณและเรียกใช้

curl -sSL https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer | bash -s stable

เมื่อสิ่งนี้เสร็จสมบูรณ์คุณต้องรีสตาร์ทเครื่องเพื่อให้rvmคำสั่งทำงาน

ตอนนี้ทำงาน rvm list known

นี่แสดงรายการรุ่นของทับทิม

ทีนี้ลองเรียกใช้rvm install ruby@latestเพื่อรับทับทิมรุ่นล่าสุด

ถ้าคุณพิมพ์ruby -vใน terminal ruby X.X.Xคุณควรจะเห็น

หากยังคงแสดงให้คุณเห็นวิ่งruby 2.0.rvm use ruby-X.X.X --default


3
2.2.0 ไม่ใช่ Ruby เวอร์ชั่นล่าสุด
Jordan เริ่ม

1
@Jordan ฉันไม่ดี 2.3 เป็นเวอร์ชั่นเสถียร
Abhinay Reddy Keesara

71
สิ่งนี้ทำงานบน Mac OS เพื่อติดตั้ง RVM:\curl -sSL https://get.rvm.io | bash -s stable --ruby
zed

7
2.4 เป็นเวอร์ชั่นเสถียรล่าสุด: ติดตั้ง rvm ruby-2.4.0
seeARMS

7
ท่อส่งออกขดตรงไปยังการดำเนินการเป็นฝันร้ายด้านความปลอดภัยรอที่จะเกิดขึ้น
arp

214

ชงเพียงทางออก

ปรับปรุง:

จากความเห็น (คำชื่นชมถึง Maksim Luzik) ฉันยังไม่ได้ทดสอบ แต่ดูเหมือนว่าจะเป็นทางออกที่ดีกว่า:

หลังจากติดตั้ง ruby ​​through brew ให้รันคำสั่งต่อไปนี้เพื่ออัพเดตลิงก์ไปยังการติดตั้ง ruby ​​ล่าสุด: brew link --overwrite ruby

คำตอบเดิม:

สายไปงานเลี้ยง แต่ใช้ชงก็พอ ไม่จำเป็นต้องติดตั้ง rvm และสำหรับฉันมันเป็นเพียงสิ่งที่ซับซ้อน

โดยbrew install rubyคุณกำลังติดตั้งล่าสุดจริง ๆ (ปัจจุบัน v2.4.0) อย่างไรก็ตามเส้นทางของคุณค้นหา 2.0.0 ก่อน เพื่อหลีกเลี่ยงปัญหานี้ให้เปลี่ยนลำดับความสำคัญ ( แหล่งที่มา ) ฉันทำสิ่งนี้โดยการเปลี่ยน~/.profileและการตั้งค่า:

export PATH=/usr/local/bin:$PATH

หลังจากนี้ฉันพบว่า bundler gem ยังคงใช้เวอร์ชัน 2.0.0 เพียงติดตั้งอีกครั้ง: gem install bundler


2
ขอบคุณสิ่งที่ฉันกำลังมองหาขอบคุณ หากฉันเป็นนักพัฒนาทับทิมแล้ว rvm ก็สมเหตุสมผล แต่ฉันก็ไม่ได้ดังนั้นนี่จึงสมบูรณ์แบบ
สูงสุด

4
งานนี้ต้องทำ "source ~ / .bash_profile" หลังจากติดตั้ง
mjpablo23

9
หรือหลังการติดตั้ง ruby ​​ผ่าน Brew ให้รันคำสั่งต่อไปนี้เพื่ออัพเดทลิงค์ไปยังการติดตั้ง ruby ​​ล่าสุด:brew link --overwrite ruby
Maksim Luzik

1
แทนที่จะเป็นoverwriteรุ่นทับทิมคุณสามารถเขียนได้brew unlink ruby && brew link ruby
Hamsternik

7
โซลูชันของ @MaksimLuzik ใช้ไม่ได้กับ MacOS brew link --overwrite rubyนำไปสู่Warning: Refusing to link macOS-provided software: ruby
Rafael Beckel

97

ฉันแนะนำrbenv * https://github.com/rbenv/rbenv

* หากตรงตามเกณฑ์ของคุณ: https://github.com/rbenv/rbenv/wiki/Why-rbenv? :

rbenv ทำ ...

  • ให้การสนับสนุนสำหรับการระบุรุ่นที่ใช้เฉพาะทับทิม
  • ให้คุณเปลี่ยนรุ่น Ruby สากลได้แบบต่อผู้ใช้
  • อนุญาตให้คุณแทนที่เวอร์ชัน Rubyด้วยตัวแปรสภาพแวดล้อม

ตรงกันข้ามกับ RVM rbenv ไม่ ...

  • จำเป็นต้องโหลดลงในเปลือกของคุณ แต่วิธีการชิม rbenv $PATHทำงานโดยการเพิ่มไดเรกทอรีที่คุณ
  • แทนที่คำสั่งเชลล์เช่นcdหรือต้องการแฮ็กพรอมต์ นั่นเป็นอันตรายและเกิดข้อผิดพลาดได้ง่าย
  • มีไฟล์กำหนดค่า ไม่มีการกำหนดค่าใดนอกจากว่าคุณต้องการใช้ทับทิมเวอร์ชันใด
  • ติดตั้ง Ruby คุณสามารถสร้างและติดตั้ง Ruby ด้วยตนเองหรือใช้ruby-buildเพื่อทำให้กระบวนการเป็นไปโดยอัตโนมัติ
  • จัดการพลอย Bundlerเป็นวิธีที่ดีกว่าในการจัดการการพึ่งพาแอปพลิเคชัน หากคุณมีโครงการที่ยังไม่ได้ใช้ Bundler คุณสามารถติดตั้ง ปลั๊กอินrbenv-gemset
  • ต้องการการเปลี่ยนแปลงไลบรารี Ruby เพื่อความเข้ากันได้ ความเรียบง่ายของ rbenv หมายถึงตราบใดที่มันอยู่ในของคุณ$PATH, อะไร อื่นความต้องการรู้เกี่ยวกับมัน

การติดตั้ง

ติดตั้งHomebrew http://brew.sh

แล้ว:

$ brew update
 $ ติดตั้งติดตั้ง rbenv
$ brew ติดตั้ง rbenv ruby-build

# เพิ่ม rbenv เพื่อทุบตีเพื่อให้โหลดทุกครั้งที่คุณเปิดเทอร์มินัล
echo 'ถ้า rbenv> / dev / null; จากนั้น eval "$ (rbenv init -)"; fi '>> ~ / .bash_profile
แหล่งที่มา ~ / .bash_profile

UPDATE
มีอีกหนึ่งขั้นตอนหลังจากbrew install rbenvRunrbenv initและเพิ่มหนึ่งบรรทัดใน.bash_profileขณะที่มันระบุ หลังจากนั้นเปิดหน้าต่างเทอร์มินัลของคุณอีกครั้ง […] SGI 30 ก.ย. เวลา 12:01 น. - https://stackoverflow.com/users/119770

$ rbenv ติดตั้ง - รายการ
รุ่นที่มี:
 1.8.5-p113
 1.8.5-P114
 [ ... ]
 2.3.1
 2.4.0-dev
 JRuby-1.5.6
 [ ... ]
$ rbenv ติดตั้ง 2.3.1
[ ... ]

ตั้งค่ารุ่นสากล:

$ rbenv ทั่วโลก 2.3.1
$ ruby ​​-v
ruby 2.3.1p112 (2016-04-26 แก้ไข 54768) [x86_64-darwin15]

ตั้งค่าเวอร์ชั่น repo ของคุณในพื้นที่โดยเพิ่ม.ruby-versionไปยังราก repo ของคุณ:

$ cd ~ / whatevs / projects / new_repo
$ echo "2.3.1"> .ruby-version

สำหรับ MacOS เยี่ยมชมลิงค์นี้


3
@ChuchaC ไม่มีปัญหา แต่ก่อนที่คุณจะทำสิ่งนี้มาจาก rbenv readme: "หมายเหตุเกี่ยวกับความเข้ากันได้: rbenv ไม่สามารถใช้ร่วมกับ RVM ได้โปรดตรวจสอบให้แน่ใจว่าได้ถอนการติดตั้ง RVM อย่างสมบูรณ์และลบการอ้างอิงใด ๆ - github.com/rbenv/rbenv#installation
SoAwesomeMan

17
ไม่ได้ช่วย ยังคงได้รับรุ่นมาตรฐาน 2.0.0 สำหรับruby -vหลังจากrbenv global ...
tuxSlayer

8
มีอีกหนึ่งขั้นตอนหลังจากbrew install rbenvเรียกใช้rbenv initและเพิ่มหนึ่งบรรทัดใน. bash_profile ตามที่ระบุ หลังจากนั้นเปิดหน้าต่างเทอร์มินัลของคุณอีกครั้งให้ทำrbenv install 2.3.1แล้วrbenv global 2.3.1 rbenv จะทำงานได้
SGI

6
อาจจะช้าไป แต่สำหรับการอ้างอิงในอนาคตสำหรับผู้ที่พบปัญหาเช่นเดียวกับ @tuxSlayer rbenv rehashหลังจากrbenv globalทำงานให้ฉัน
Sean

2
หลังจากrbenv init, ruby -vเอาท์พุทรุ่นที่ถูกต้อง 2.1.2 paperclip-5.0.0.beta1 requires ruby version >= 2.1.0, which is incompatible with the current version, ruby 2.0.0p648แต่วิ่งกำพบข้อผิดพลาดบางอย่างเช่นนี้ rbenv rehashสุดท้ายจัดการเพื่อให้ได้มันทำงานร่วมกับการทำงานของ ขอบคุณ @Sean
James

51

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

sudo gem update --system 

มันได้ผล!


3
สิ่งนี้ดูเหมือนจะใช้ได้จริงและเป็นคำตอบที่ตรงไปตรงมามากกว่าคำตอบอื่น ๆ แต่เมื่อทำการติดตั้งอัญมณี (ฟังตัวอย่าง) พวกเขาบ่นว่ารุ่นนั้นต่ำกว่าที่กำหนด
William Isted

8
นี่คืออัญมณีไม่ใช่ทับทิม
วิลเลียมจีพี

ชงเฉพาะทางออกที่นี่
Sergio Basurco

2
ฉันก็เข้าใจผิดด้วยคำตอบนี้เช่นกัน มัน "ใช้งานได้" ซึ่งไม่มีข้อผิดพลาดเกิดขึ้นเมื่อคุณเรียกใช้จากคอนโซล อย่างไรก็ตามมันไม่ได้ทำการอัพเดต Ruby มันอัพเดต Ruby Gems ทำตามหนึ่งในคำตอบอื่น ๆ เพื่ออัปเดต Ruby (โดยใช้ OS X Sierra)
informaton

41

วิธีที่รวดเร็วในการอัปเกรดทับทิมเป็นv2.4 +

brew upgrade ruby

หรือ

sudo gem update --system 

4
ดูเหมือนว่าจะทำอะไรมากมาย แต่การอัพเกรดทับทิมไม่ใช่หนึ่งในนั้น มันสิ้นสุดด้วย: /usr/local/Homebrew/Library/Homebrew/brew.rb:12:in '<main>': Homebrew must be run under Ruby 2.3! You're running 2.0.0. (RuntimeError)
nkoren

1
นี่เป็นวิธีที่ถูกต้องและดีที่สุดในการอัพเกรดเวอร์ชั่นทับทิมโดยใช้ brew
user1101733

ไม่ได้ผลสำหรับฉัน ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem
Sébastien Loisel

@ SébastienLoiselคุณช่วยกรุณาให้รายละเอียดเกี่ยวกับระบบปฏิบัติการของคุณคำสั่งอื่น ๆ
fatihyildizhan

1
@atihyildizhan เห็นได้ชัดว่าทับทิม / gems / etc อยู่ในสถานะ semibroken บน Mavericks ฉันแก้ไขปัญหาของฉันโดยอัปเกรดเป็น Catalina ฉันจำข้อผิดพลาดทั้งหมดที่ฉันมีไม่ได้ แต่มีหลายคน ฉันจำไม่ได้ว่าฉันกำลังพยายามอัพเกรด cocoapods หรืออัญมณีหรืออะไร แต่มันก็ไร้ความหวัง
Sébastien Loisel

31

คุณสามารถระบุทับทิมรุ่นล่าสุดได้โดยดูที่https://www.ruby-lang.org/en/downloads/

  1. ดึงเวอร์ชันล่าสุด:

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

  2. ติดตั้ง:

    rvm install 2.2

  3. ใช้เป็นค่าเริ่มต้น:

    rvm use 2.2 --default

หรือเรียกใช้คำสั่งล่าสุดจากทับทิม:

rvm install ruby --latest
rvm use 2.2 --default

ขอบคุณสิ่งนี้ใช้ได้สำหรับฉัน วิธีแก้ปัญหาด้วยrbenvไม่ทำงาน
tuxSlayer

มันก็ใช้ได้สำหรับฉันด้วย !! การแก้ปัญหาด้วยใช้rbenvไม่ได้
ruoho ruotsi


2

ในกรณีที่ทุกคนได้รับข้อผิดพลาดเดียวกันฉัน: "การติดตั้งข้อกำหนดล้มเหลวด้วยสถานะ: 1. " นี่คือสิ่งที่ต้องทำ:

ติดตั้ง Homebrew (ด้วยเหตุผลบางอย่างอาจไม่ทำงานโดยอัตโนมัติ) ด้วยคำสั่งนี้:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

จากนั้นดำเนินการติดตั้ง rvm อีกครั้งโดยใช้

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

ปิดและเปิด Terminal ใหม่แล้ว:

rvm install 2.2
rvm use 2.2 --default

2

brew install rbenv ruby-build

เพิ่ม rbenv เพื่อ bash เพื่อให้สามารถโหลดได้ทุกครั้งที่คุณเปิดเทอร์มินัล

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile

source ~/.bash_profile

ติดตั้ง Ruby

rbenv install 2.6.5

rbenv global 2.6.5

ruby -v

เชื่อมโยงไปยังหน้าแหล่งที่มา

0

ในอาคารผู้โดยสาร: rvm gemset use global


5
ในขณะที่ข้อมูลโค้ดนี้อาจเป็นโซลูชันรวมถึงคำอธิบายช่วยปรับปรุงคุณภาพการโพสต์ของคุณ จำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตและคนเหล่านั้นอาจไม่ทราบสาเหตุของการแนะนำรหัสของคุณ
Adam

-2

วิธีที่ง่ายที่สุดคือป้อนคำสั่งต่อไปนี้ในเทอร์มินัล:

sudo gem update --system

คุณสามารถเพิ่มการตั้งค่าสถานะ--no-documentหากคุณไม่ต้องการดาวน์โหลดเอกสาร นี่คือเอาต์พุตตัวอย่างหลังจากรันคำสั่ง:

sudo gem update --system
Password:
Updating rubygems-update
Fetching: rubygems-update-2.6.8.gem (100%)
Successfully installed rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing ri documentation for rubygems-update-2.6.8
Installing darkfish documentation for rubygems-update-2.6.8
Installing RubyGems 2.6.8
RubyGems 2.6.8 installed
Parsing documentation for rubygems-2.6.8
Installing ri documentation for rubygems-2.6.8

------------------------------------------------------------------------------

RubyGems installed the following executables:
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/gem

Ruby Interactive (ri) documentation was installed. ri is kind of like man 
pages for ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method

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