Copot versi permata Ruby yang lama

381

Saya memiliki beberapa versi permata Ruby:

$ gem list
rjb (1.3.4, 1.3.3, 1.1.9)

Bagaimana saya bisa menghapus versi lama tetapi tetap terbaru?

Philippe Blayo
sumber

Jawaban:

654
# remove all old versions of the gem
gem cleanup rjb

# choose which ones you want to remove
gem uninstall rjb

# remove version 1.1.9 only
gem uninstall rjb --version 1.1.9

# remove all versions less than 1.3.4
gem uninstall rjb --version '<1.3.4'
Dylan Markow
sumber
259

Untuk menghapus versi lama dari semua permata yang diinstal, 2 perintah berikut berguna:

 gem cleanup --dryrun

Perintah di atas akan mempratinjau permata apa yang akan dihapus.

 gem cleanup

Perintah di atas sebenarnya akan menghapusnya.

ohho
sumber
Tidak berfungsi dalam pengaturan cloud9 ubuntu saya ... harus dijalankan dengan sudo
Mirv - Matt
13

Coba sesuatu seperti gem uninstall rjb --version 1.3.4.

Daniel O'Hara
sumber
1
pertanyaannya adalah "Bagaimana saya bisa menghapus versi lama tetapi tetap terbaru?" respons ini akan menghapus versi terbaru.
austinheiman
10

Cara untuk membersihkan versi permata yang lama.

sudo gem cleanup

Jika Anda hanya ingin melihat daftar apa yang akan dihapus, Anda dapat menggunakan:

sudo gem cleanup -d

Anda juga dapat membersihkan hanya permata tertentu dengan menentukan namanya:

sudo gem cleanup gemname

untuk menghapus versi spesifik seperti 1.1.9 saja

gem uninstall gemname --version 1.1.9

Jika Anda masih menghadapi beberapa pengecualian untuk memasang permata, seperti:

permata tidak valid: paket rusak, pengecualian saat memverifikasi: metode `ukuran 'tidak terdefinisi untuk nihil: NilClass (NoMethodError) di /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2. permata

itu, Anda dapat menghapusnya dari cache:

rm /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2.gem

Untuk lebih detail:

http://blog.grepruby.com/2015/04/way-to-clean-up-gem-or-remove-old.html

pengguna3118220
sumber
Anda mungkin tidak boleh menggunakansudo
PR Whitehead
8

gem cleanupmenggunakan perintah sistem. Permata yang diinstal hanyalah direktori dalam sistem file. Jika Anda ingin menghapus batch, gunakan rm -R.

  1. gem environment dan perhatikan nilai GEM PATHS
  2. cd <your-gem-paths>/gems
  3. ls -1 |grep rjb- |xargs rm -R
Anatoly
sumber
2
"Permata yang diinstal hanyalah direktori di sistem file." senang tahu, terima kasih
filant
0

Anda mungkin perlu mengatur GEM_HOMEagar pembersihan berfungsi. Anda dapat memeriksa jalur apa yang ada untuk gemfiles dengan menjalankan:

gem env

Perhatikan bagian GEM PATHS.

Dalam kasus saya, misalnya, dengan permata yang dipasang di rumah pengguna saya:

export GEM_HOME="~/.gem/ruby/2.4.0"
gem cleanup
lkraider
sumber