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:~$
Anuj
sumber
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.

SACX
sumber
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

jujur
sumber
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`
jvc26
sumber
#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'
Aravin
sumber
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 tidak akan menggunakan paket debian, lihat RVM atau Rbenv .

lucas clemente
sumber
Paket Debian ada untuk Rbenv
antono
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.

ini adalah desainku
sumber
4

Bagi saya itu cukup dengan hanya menjalankan

gem update
Klas Mellbourn
sumber
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
Ruto Collins
sumber
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