วิธีอัพเกรด rubygems


206

ฉันจำเป็นต้องอัพเกรดอัญมณีเป็น 1.8 ฉันลองติดตั้งแพ็คเกจ debian ตามลำดับ แต่ดูเหมือนว่ามันจะไม่ได้รับการอัพเกรด

anujm@test:~$ dpkg -l |grep -i rubygem
ii  rubygems                               1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems-lwes                          0.8.2-1323277262                                LWES rubygems
ii  rubygems1.8                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems1.9                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
anujm@test:~$ 


anujm@test:~$ gem
gem     gem1.8  gem1.9  
anujm@test:~$ sudo gem1.8 install serve
ERROR:  Error installing serve:
        multi_json requires RubyGems version >= 1.3.6
anujm@test:~$

2
คำถามของคุณคือการอัพเดท Rubygems เองไม่ใช่อัญมณีเฉพาะที่จัดการโดย rubygems
Michael

คำตอบ:


471

ติดตั้ง rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

รันคำสั่งนี้เป็นรูทหรือใช้ sudo


1
ฉันได้รับข้อยกเว้นนี้เมื่อฉันติดตาม ue คำแนะนำการอัปเดตอัญมณี - ระบบถูกปิดการใช้งานใน Debian RubyGems สามารถอัปเดตได้โดยใช้ที่เก็บ Debian อย่างเป็นทางการโดย aptitude หรือ apt-get
Anuj

3
ที่นี่เนื่องจากปัญหาเกี่ยวกับ unicode gem ( github.com/blackwinter/unicode/issues/5 ): หลังจากที่มีคำตอบของ run answer ฉันต้องทำงานgem pristine unicodeซึ่งสร้าง gem ขึ้นมาใหม่และทำให้มันใช้งานได้
จริงๆ

1
ขอบคุณมันช่วยให้ฉันติดตั้งminitestบนพาร์ติชัน NFS ได้ github.com/rubygems/rubygems/issues/1161
Oncle Tom

12
rubygems-updateติดตั้งโดยค่าเริ่มต้น gem update --systemดังนั้นจึงเป็นเรื่องของการทำงานเพียง
dskecse

2
sudoโดยปกติแล้วคุณจะไม่ต้องการที่จะเรียกใช้คำสั่งนี้เป็น ที่จะอัพเกรดระบบทับทิม ลองใช้งานrvmหรือrbenv
Hendrik

54

คุณสามารถอัปเดตพลอยทั้งหมดโดยเพียงแค่ดำเนินการ:

sudo gem update


44
นี่คือคำตอบที่กำลังมองหาคำถาม
Michael

1
โดยไม่ต้องsudoถ้าคุณติดตั้งพลอยในฐานะผู้ใช้ทั่วไป (การติดตั้งพลอยในฐานะรูทนั้นไม่ค่อยดีเท่าไหร่)
akostadinov

4
คำถามไม่ใช่ "ฉันจะอัปเดตพลอยทั้งหมดได้อย่างไร" แต่แทนที่จะ "ฉันจะอัปเดต RubyGems บนเครื่องของฉันได้อย่างไร"
aceofbassgreg

19

หรือ:

gem update `gem outdated | cut -d ' ' -f 1`

#brilliant ขอบคุณสำหรับอันนี้ ฉันเพิ่ม--forceเพื่อป้องกันไม่ให้ระบบอัตโนมัติหยุดทำงานเพื่อยืนยันการเขียนทับ
SaxDaddy

ไม่ตอบคำถาม
agbodike

ตามลำดับมีข้อผิดพลาด shellcheck gem update "$(gem outdated | cut -d ' ' -f 1)";คงที่:
BernhardWebstudio

11

คุณสามารถอัปเดต gem เป็นเวอร์ชันใด ๆ เช่นนี้

gem update --system 'version'

gem update --system '2.3.0'

1
คำสั่งของคุณไม่สามารถใช้งานได้กับการจำหน่ายโดยใช้เดเบียน gem update --system "2.1.0" ข้อผิดพลาด: ขณะดำเนินการ gem ... (RuntimeError) gem gem - ระบบปิดใช้งานบน Debian เพราะมันจะเขียนทับเนื้อหาของ rubygems แพ็คเกจ Debian และอาจทำลายระบบ Debian ของคุณในรูปแบบที่ละเอียดอ่อน วิธีที่ได้รับการสนับสนุนจากเดเบียนในการอัปเดต rubygems คือผ่าน apt-get โดยใช้ที่เก็บของ Debian อย่างเป็นทางการ หากคุณรู้ว่ากำลังทำอะไรอยู่คุณสามารถอัปเดต rubygems ได้ด้วยการตั้งค่าตัวแปรสภาพแวดล้อม REALLY_GEM_UPDATE_SYSTEM แต่โปรดจำไว้ว่า Debian ไม่ได้รับการสนับสนุนอย่างสมบูรณ์
jeff


5

ฉันพบคำตอบอื่น ๆ ที่ไม่ถูกต้อง / ล้าสมัย ดีที่สุดคือการดูเอกสารที่เกิดขึ้นจริง

รุ่นสั้น: ในกรณีส่วนใหญ่ gem update --systemจะพอเพียง

sudoคุณไม่ควรใช้สุ่มสี่สุ่มห้า ในความเป็นจริงหากคุณไม่จำเป็นต้องทำเช่นนั้นคุณมักไม่ควรใช้


4

สำหรับฉันมันพอเพียงที่จะวิ่ง

gem update

5
นี่คือการอัปเดตอัญมณีของคุณไม่ใช่ซอฟต์แวร์ rubygems
ปีเตอร์เอชโบลลิ่ง

1
จริง แต่นี่เป็นผลลัพธ์แรกของ Google สำหรับการค้นหาเช่น "update gem version" ดังนั้นฉันดีใจที่คำตอบนี้มาถึงแล้ว
ncrypticus

-1

หากต้องการอัปเดตอัญมณีเพียงหนึ่งอัน (และเป็นการพึ่งพา) ให้ทำ:

    bundle update gem-name

แต่หากต้องการอัปเดตอัญมณีเพียงอย่างเดียว (โดยไม่ต้องอัปเดตการอ้างอิงของมัน) ให้ทำ

    bundle update --source gem-name

1
นี่คือการอัปเดตอัญมณีเฉพาะไม่ใช่ซอฟต์แวร์ rubygems
thisismydesign

1
@thisismydesign ฉันคิดว่าฉันระบุว่าจะอัปเดตเฉพาะอัญมณีเฉพาะหรือไม่
Ruto Collins

ใช่ แต่นั่นไม่ใช่สิ่งที่เป็นคำถาม
thisismydesign

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