Удалить все установленные драгоценные камни, в OSX? - PullRequest
164 голосов
/ 11 ноября 2011

В некоторых случаях я хотел бы отменить и удалить все предыдущие установки gem.

Например, мне нужно было помочь другу перевести его машину для разработки rails на использование RVM.Поскольку они ранее использовали общесистемный gem, он испытывал множество головных болей при работе с несколькими проектами. По сути, он был потомком для конвертера RVM.

Как мне элегантно удалить все драгоценные камни в его системе OSX?

Ответы [ 13 ]

397 голосов
/ 11 ноября 2011

Rubygems> = 2.1.0

gem uninstall -aIx

a удаляет все версии
I игнорирует зависимости
x включает исполняемые файлы

Рубг <2.1.0 </strong>

for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
43 голосов
/ 19 декабря 2012

Вы также можете создать новый Gemfile и запустить bundle clean --force. Это удалит все другие драгоценные камни, которые не включены в новый Gemfile.

27 голосов
/ 14 февраля 2012

Самая простая версия, пропуская шаг вырезания, используя опцию '--no-version':

gem list --no-version |xargs gem uninstall -ax

Поскольку вы все удаляете, я не вижу необходимости в опции «Я». Всякий раз, когда камень удаляется, это нормально.

9 голосов
/ 28 сентября 2012

Используйте либо

$ gem list --no-version | xargs gem uninstall -ax

, либо

$ sudo gem list --no-version | xargs sudo gem uninstall -ax

В зависимости от того, что вы хотите, вам может потребоваться выполнить оба, потому что "список драгоценных камней" и "список драгоценных камней sudo" предоставляют независимыеlists.

Не смешивайте обычный «список драгоценных камней» с sudo-ed «gem uninstall» и наоборот, иначе вы можете в конечном итоге удалить установленные sudo gems (прежние) или получить много ошибок(последний).

8 голосов
/ 19 июня 2016

Сначала убедитесь, что у вас есть хотя бы версия gem 2.1.0

gem update --system
gem --version
# 2.6.4

Чтобы удалить, просто запустите:

gem uninstall --all

Возможно, вам потребуется использовать команду sudo:

sudo gem uninstall --all
8 голосов
/ 04 марта 2015

Если вы используете Rubygems версии 2.1.0 или выше, вы можете попробовать: gem uninstall --all.

5 голосов
/ 21 ноября 2012

Если вам нравится делать это, используя ruby:

ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"

Cheers

3 голосов
/ 29 января 2016

Rubygems> = 2.1.0

gem uninstall -aIx

Если Терминал возвращает ошибку ниже

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Затем напишите приведенную выше команду, как показано ниже

sudo gem uninstall -aIx

И введите свой пароль к учетной записи Mac OS Готово !!

2 голосов
/ 26 сентября 2017

А для тех из вас, кто находится здесь, потому что вы хотите удалить все драгоценные камни с определенным префиксом ( гм Я смотрю на вас aws-sdk!), Вы можете запустить что-то вроде этого:

gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx

Очевидно, введите ваш запрос вместо aws-sdk-. Вам нужно -I, чтобы игнорировать зависимости.

Принято от Ando's более ранний ответ

2 голосов
/ 22 апреля 2013

Единственная команда помогла мне очистить все драгоценные камни и игнорирует драгоценные камни по умолчанию, которые не могут быть удалены

for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...