2013-02-26 11 views
43

Wygląda na to, że Ruby 2.0.0 dodał "domyślne" klejnoty do miksu i sprawia, że ​​nie są usuwane przez deinstalację gem.Odinstalowywanie wszystkich klejnotów Ruby 2.0.0

Jak usunąć wszystkie klejnoty inne niż domyślne?

+0

można podać przykład klejnoty i jak zainstalowałeś Ruby 2.0 (ręcznie? 'rvm'?) –

+1

Użyłem rbenv do zainstalowania ruby ​​2.0.0-p0. Klejnoty, które są dla mnie "domyślne" to przynajmniej: bigdecimal 1.2.0, io-console 0.4.2, json 1.7.7, minitest 4.3.2, psych 2.0.0, rake 0.9.6, rdoc 4.0.0, test -jednostka 2.0.0.0. Nie można odinstalować błędów 'gem uninstall json' z gem" json ", ponieważ jest to domyślny klejnot. –

+1

Przepraszam, niezrozumiany. Nigdy nie usuwam klejnotów, nie jestem pewien. Dlaczego potrzebujesz czegoś innego niż "oczyszczanie klejnotów"? –

Odpowiedz

84

Użyłem tego skryptu w jednym wierszu.

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

Ignoruje domyślne błędy klejnotów i po prostu kontynuuje. Proste i oczywiste.

+0

To jest prostsze rozwiązanie dla tego problemu, zakładając, że rubygems nadal działa w ten sposób :) –

+0

Dobra robota! Nie widać zbyt wielu poleceń powłoki za pomocą pętli. –

+14

Nie działa.nadal otrzymuję komunikat "nie można odinstalować, ponieważ jest to domyślny klejnot". – Nippysaurus

4

Napisałem skrypt w ruby, aby usunąć wszystkie klejnoty, które nie są domyślne.

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

Jest to konieczne, ponieważ w przeciwieństwie do obecnie przed 2.0.0 niektóre kamienie są oznaczone jako „default” z instalacją rubin, i nie można odinstalować z gem uninstall. To sprawia, że ​​dotychczas popularne metody usuwania wszystkich klejnotów nie działają.

Dla odniesienia tutaj jest.

+0

Podany link już nie istnieje. "OH NOES, 404". Czy istnieje gdzieś indziej ten skrypt istnieje, czy jest "do odniesienia" linii całego skryptu? –

+1

Dzięki. Zmieniłem nazwę użytkownika. Adres URL jest naprawiony. –

+0

to powoduje awarię domyślnych klejnotów – brauliobo

9

pierwsze, przejdź do katalogu klejnotów Jak ../ruby/2.0.0-p195/lib/ruby/gems/2.0.0/specifications
Będziesz znaleźć katalog o nazwie domyślny, który w tym wszystkim kamienie domyślne dostarczane z rubinem 2,0

przenieść wszystkie * .gemspec przechowywane w domyślnie reż do specyfikacje dir i wyjąć pusty domyślny reż.

Potem możesz robić, co chcesz, jak za dawnych dni :-)

+0

Do czego służy katalog specyfikacji? Jest na ścieżce obciążenia, którą zakładam? –

0

nie znaleźli jeszcze lepszą odpowiedź niż o wykluczeniu „default” perełki.

/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

Ten kod zakłada, że ​​zainstalowałeś Ruby 2.0 ze źródła w systemie Linux. – Kevin

Powiązane problemy