Cara memutakhirkan rubygems


206

Saya perlu memperbarui permata ke 1,8 saya mencoba menginstal paket debian masing-masing tetapi tampaknya tidak semakin ditingkatkan

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
Hanya untuk memperjelas, pertanyaan Anda adalah tentang cara memperbarui Rubygems sendiri - bukan permata tertentu yang dikelola oleh rubygems.
Michael

Jawaban:


471

Instal rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

jalankan perintah ini sebagai root atau gunakan sudo.


1
saya mendapatkan pengecualian ini ketika saya mengikuti pembaruan permata saran ue - sistem dinonaktifkan pada Debian. RubyGems dapat diperbarui menggunakan repositori Debian resmi dengan aptitude atau apt-get.
Anuj

3
Di sini karena masalah dengan permata unicode ( github.com/blackwinter/unicode/issues/5 ): setelah menjalankan solusi jawaban, saya harus menjalankan gem pristine unicodeyang membangun ulang permata dan membuatnya dapat digunakan.
reallynice

1
Terima kasih, ini membantu saya untuk menginstal minitestpada partisi NFS cf. github.com/rubygems/rubygems/issues/1161
Oncle Tom

12
rubygems-updatediinstal secara default. Jadi, masalah menjalankan saja gem update --system.
dskecse

2
Biasanya Anda tidak akan pernah ingin menjalankan perintah ini sebagai sudo. Itu akan meningkatkan sistem ruby. Pertimbangkan untuk menggunakan rvmataurbenv
Hendrik

54

Anda dapat memperbarui semua permata dengan hanya melakukan:

sudo gem update


44
Ini adalah jawaban mencari pertanyaan.
Michael

1
tanpa sudojika Anda menginstal permata sebagai pengguna biasa (menginstal permata sebagai root tidak terlalu bagus).
akostadinov

4
Pertanyaannya bukan "Bagaimana cara saya memperbarui semua permata?" melainkan "Bagaimana cara saya memperbarui RubyGems di mesin saya?"
aceofbassgreg

19

Atau:

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

#brilliant Terima kasih untuk yang satu ini. Saya hanya menambahkan --forceagar otomatisasi tidak berhenti untuk konfirmasi overwrite
SaxDaddy

tidak menjawab pertanyaan
agbodike

Masing-masing dengan kesalahan shellcheck tetap: gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio

11

Anda dapat memperbarui permata ke versi spesifik seperti ini,

gem update --system 'version'

gem update --system '2.3.0'

1
perintah Anda tidak berfungsi pada distribusi berdasarkan pembaruan permata debian - sistem "2.1.0" KESALAHAN: Saat menjalankan permata ... pembaruan permata (RuntimeError) - sistem dinonaktifkan di Debian, karena itu akan menimpa konten dari paket rubygems Debian, dan mungkin merusak sistem Debian Anda dengan cara yang halus. Cara yang didukung Debian untuk memperbarui rubygems adalah melalui apt-get, menggunakan repositori resmi Debian. Jika Anda benar-benar tahu apa yang Anda lakukan, Anda masih dapat memperbarui rubygem dengan mengatur variabel lingkungan REALLY_GEM_UPDATE_SYSTEM, tetapi harap diingat bahwa ini sepenuhnya tidak didukung oleh Debian.
jeff


5

Saya menemukan jawaban lain tidak akurat / ketinggalan jaman. Yang terbaik adalah merujuk pada dokumentasi yang sebenarnya .

Versi singkat: dalam banyak kasus gem update --system sudah cukup.

Anda seharusnya tidak menggunakannya secara membabi buta sudo. Bahkan jika Anda tidak diharuskan melakukannya maka kemungkinan besar Anda tidak boleh menggunakannya.


4

Bagi saya itu cukup dengan hanya menjalankan

gem update

5
Ini untuk memperbarui permata Anda, bukan perangkat lunak rubygems itu sendiri.
Peter H. Boling

1
Benar, tetapi ini adalah hasil Google pertama untuk pencarian seperti "perbarui versi permata", jadi saya senang jawaban ini ada di sini.
ncrypticus

-1

Untuk memperbarui hanya satu permata (dan dependensinya), lakukan:

    bundle update gem-name

Tetapi untuk memperbarui hanya permata saja (tanpa memperbarui dependensinya), lakukan

    bundle update --source gem-name

1
Ini untuk memperbarui permata tertentu, bukan perangkat lunak rubygems itu sendiri.
desain

1
@ thisismydesign Saya pikir saya menetapkan bahwa ini hanya akan memperbarui permata tertentu?
Ruto Collins

Ya tapi bukan itu pertanyaannya.
thisismydesign

1
Saya melihat. Tapi saya tahu ini akan membantu seseorang seperti saya yang pertama kali mendarat di sini :)
Ruto Collins
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.