2013-02-26 12 views
43

Sembra che Ruby 2.0.0 ha aggiunto gemme "default" per il mix e li rende non rimovibile da gemma di disinstallazione.Disinstallare tutte le gemme del rubino 2.0.0

Come si può rimuovere tutte le gemme non predefinite?

+0

Si può fornire esempio di gemme e come si è installato rubino 2.0 (manualmente? 'rvm'?) –

+1

ho usato rbenv installare ruby ​​2.0.0-p0. Gemme che sono "default" almeno per me sono: BigDecimal 1.2.0, io-console 0.4.2, 1.7.7 JSON, Minitest 4.3.2, 2.0.0 psych, rastrello 0.9.6, 4.0.0 rdoc, prova -unità 2.0.0.0. Gli errori 'gem uninstall json' con gem" json "non possono essere disinstallati perché sono una gemma predefinita. –

+1

Mi spiace, incompreso. Non elimino mai le gemme, non sono sicuro che lo farebbero. Perché hai bisogno di qualcosa di diverso da "gem cleanup"? –

risposta

84

Ho usato questo script a una riga.

for i in `gem list --no-versions`; do gem uninstall -aIx $i; done 

Ignora gli errori gem default e procede. Semplice ed evidente.

+0

Questa è una soluzione più semplice per questo problema, supponendo che rubygems continui a funzionare in questo modo :) –

+0

Bel lavoro! Non si vedono molti comandi di shell temporizzati pubblicati usando un ciclo. –

+14

Non funziona.ancora ottenere 'non può essere disinstallato perché è un errore gem default'. – Nippysaurus

4

Ho scritto uno script in Ruby per rimuovere tutte le gemme non predefinite.

https://gist.github.com/nixpulvis/5042764

Ciò è necessario ora, perché a differenza di prima 2.0.0 alcune gemme sono classificati come "default" con l'installazione di rubino, e non può essere disinstallato con gem uninstall. Ciò rende i metodi precedentemente popolari per l'eliminazione di tutte le gemme non funzionanti.

Per avere un riferimento qui è.
gem list | cut -d" " -f1 | xargs gem uninstall

+0

Il link fornito non esiste più. "OH NOES, 404". Esiste da qualche altra parte questo script esiste, o è la linea "per riferimento" l'intero script? –

+1

Grazie. Ho cambiato il mio nome utente. L'URL è fisso. –

+0

questo si blocca per le gemme predefinite – brauliobo

9

In primo luogo, andare alla directory gemme Come ../ruby/2.0.0-p195/lib/ruby/gems/2.0.0/specifications
troverete una directory di nome predefinita, che compreso tutto le gemme di default forniti con rubino 2.0

spostare tutti i * .gemspec memorizzato in predefinita dir a specifiche dir e rimuovere il vuoto predefinita dir.

Poi si può fare quello che vuoi come vecchi giorni :-)

+0

Qual è la directory delle specifiche usata per ora? Presumo nel percorso di carico? –

0

non ho ancora trovato una risposta migliore di escludere i "default" gemme:.

/usr/local/bin/gem list --no-versions | \ 
grep -v -E "(bigdecimal|io-console|json|minitest|psych|rake|rdoc|test-unit)" | \ 
xargs --no-run-if-empty /usr/local/bin/gem uninstall --executables --user-install --all --force 
+0

Questo codice presuppone l'installazione di Ruby 2.0 dal sorgente su Linux. – Kevin

Problemi correlati