Cách nâng cấp rubygems


206

Tôi cần nâng cấp đá quý lên 1.8 Tôi đã thử cài đặt các gói debian tương ứng nhưng có vẻ như nó không được nâng cấp

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
Chỉ cần làm rõ, câu hỏi của bạn là về cách cập nhật chính Rubygems - không phải bất kỳ loại đá quý cụ thể nào được quản lý bởi rubygems.
Michael

Câu trả lời:


471

Cài đặt rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

chạy các lệnh này như root hoặc sử dụng sudo.


1
Tôi nhận được ngoại lệ này khi theo dõi cập nhật đá quý gợi ý - hệ thống bị vô hiệu hóa trên Debian. RubyGems có thể được cập nhật bằng cách sử dụng kho lưu trữ Debian chính thức theo aptitude hoặc apt-get.
Anuj

3
Ở đây vì có vấn đề với đá quý unicode ( github.com/blackwinter/unicode/issues/5 ): sau khi chạy giải pháp của câu trả lời, tôi phải chạy gem pristine unicodemà xây dựng lại đá quý và làm cho nó có thể sử dụng được.
thực sự là

1
Cảm ơn, nó đã giúp tôi cài đặt minitesttrên phân vùng NFS. github.com/rubygems/rubygems/issues/1161
Oncle Tom

12
rubygems-updateđược cài đặt theo mặc định. Vì vậy, đó là vấn đề của việc chạy gem update --system.
dskecse

2
Thông thường bạn sẽ không bao giờ muốn chạy lệnh này như sudo. Điều đó sẽ nâng cấp hệ thống ruby. Cân nhắc sử dụng rvmhoặcrbenv
Hendrik

54

Bạn có thể cập nhật tất cả các đá quý bằng cách thực hiện:

sudo gem update


44
Đây là một câu trả lời tìm kiếm một câu hỏi.
Michael

1
không có sudonếu bạn cài đặt đá quý như một người dùng thông thường (cài đặt đá quý như root dù sao cũng không đẹp lắm).
akostadinov

4
Câu hỏi không phải là "Làm thế nào để tôi cập nhật tất cả đá quý?" mà là "Làm cách nào để cập nhật RubyGems trên máy của tôi?"
aceofbassgreg

19

Hoặc là:

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

#brIDIA Cảm ơn vì điều này. Tôi chỉ thêm --forceđể giữ cho tự động hóa không dừng để xác nhận ghi đè
SaxDaddy

không trả lời câu hỏi
agbodike

Đã sửa lỗi tương ứng với các lỗi shellcheck : gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio

11

Bạn có thể cập nhật đá quý lên bất kỳ phiên bản cụ thể nào như thế này,

gem update --system 'version'

gem update --system '2.3.0'

1
bạn ra lệnh không hoạt động phân phối dựa trên cập nhật đá quý debian - hệ thống "2.1.0" LRI: Trong khi thực hiện cập nhật đá quý ... (RuntimeError) - hệ thống bị vô hiệu hóa trên Debian, vì nó sẽ ghi đè lên nội dung của gói rubygems Debian và có thể phá vỡ hệ thống Debian của bạn theo những cách tinh tế. Cách hỗ trợ Debian để cập nhật rubygems là thông qua apt-get, sử dụng kho chính thức của Debian. Nếu bạn thực sự biết những gì bạn đang làm, bạn vẫn có thể cập nhật rubygems bằng cách đặt biến môi trường REALLY_GEM_UPDATE_SYSTEM, nhưng hãy nhớ rằng điều này hoàn toàn không được Debian hỗ trợ.
jeff


5

Tôi tìm thấy câu trả lời khác là không chính xác / lỗi thời. Tốt nhất là tham khảo các tài liệu thực tế .

Phiên bản ngắn: trong hầu hết các trường hợp gem update --system sẽ đủ.

Bạn không nên mù quáng sử dụng sudo. Trong thực tế nếu bạn không bắt buộc phải làm như vậy thì rất có thể bạn không nên sử dụng nó.


4

Đối với tôi, nó chỉ đơn giản là chạy

gem update

5
Đây là để cập nhật đá quý của bạn, không phải là phần mềm rubygems.
Peter H. Boling

1
Đúng, nhưng đây là kết quả đầu tiên của Google cho các tìm kiếm như "cập nhật phiên bản đá quý", vì vậy tôi rất vui vì câu trả lời này đã có ở đây.
ncrypticus

-1

Để cập nhật chỉ một viên ngọc (và đó là phụ thuộc), hãy làm:

    bundle update gem-name

Nhưng để chỉ cập nhật đá quý một mình (không cập nhật phụ thuộc), hãy làm

    bundle update --source gem-name

1
Đây là để cập nhật đá quý cụ thể, không phải là phần mềm rubygems.
thisismydesign

1
@thisismydesign Tôi nghĩ rằng tôi đã chỉ định rằng điều này sẽ chỉ cập nhật một loại đá quý cụ thể?
Ruto Collins

Có nhưng đó không phải là những gì câu hỏi về.
thisismydesign

1
Tôi hiểu rồi. Nhưng tôi biết điều này sẽ giúp một người như tôi đã hạ cánh ở đây trước :)
Ruto Collins
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.