Удалить все установленные камни в OSX?

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

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

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

Ответ 1

Rubygems >= 2.1.0

gem uninstall -aIx

Rubgems < 2.1.0

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

Используйте

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

или

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

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

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

Ответ 5

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

Ответ 6

Сначала убедитесь, что у вас есть как минимум gem version 2.1.0

gem update --system
gem --version
# 2.6.4

Чтобы просто удалить программу:

gem uninstall --all

Вам может понадобиться команда sudo:

sudo gem uninstall --all

Ответ 7

Если вам нравится делать это с помощью ruby:

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

Приветствия

Ответ 8

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 Готово!!

Ответ 9

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

for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done

Ответ 10

Я сделал это не так давно (такая же ситуация с переключателем RVM для плаката-ребенка):

gem list | cut -d" " -f1 | sudo xargs gem uninstall -Iax

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

sudo полезен только в том случае, если у вас есть драгоценные камни, установленные в системе, и не следует включать, если это необходимо.

Ответ 11

При попытке удалить драгоценные камни, установленные как root, xargs, кажется, останавливается, когда он сталкивается с ошибкой, пытающейся удалить драгоценный камень по умолчанию:

sudo gem list | cut -d" " -f1 | xargs gem uninstall -aIx
# ERROR:  While executing gem ... (Gem::InstallError)
#    gem "test-unit" cannot be uninstalled because it is a default gem


Это не сработает для всех, но здесь я использовал вместо этого:

sudo for gem (`gem list | cut -d" " -f1`); do gem uninstall $gem -aIx; done

Ответ 12

gem list --no-version | grep -v -e 'psych' -e 'rdoc' -e 'openssl' -e 'json' -e 'io-console' -e 'bigdecimal' | xargs sudo gem uninstall -ax

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

Ответ 13

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

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

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

Принятая форма Андо более ранний ответ