Ответ 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
Есть случаи, когда я хотел бы вернуть и удалить все предыдущие установки gem.
Например, мне нужно было помочь другу перенести свою машину разработки рельсов на использование RVM. Поскольку они ранее использовали общесистемный gem
, он испытывал много головных болей при работе с несколькими проектами. По сути, он был плакатом-ребенком для конвертации RVM.
Как я могу элегантно удалить все драгоценные камни в своей системе OSX?
Rubygems >= 2.1.0
gem uninstall -aIx
Rubgems < 2.1.0
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
Вы также можете создать новый Gemfile и запустить bundle clean --force
. Это приведет к удалению всех других драгоценных камней, которые не включены в новый Gemfile.
Самая сложная версия, пропуская шаг разреза, используя опцию "-no-version":
gem list --no-version |xargs gem uninstall -ax
Поскольку вы удаляете все, я не вижу необходимости в опции "я". Всякий раз, когда камень удаляется, он прекрасен.
Используйте
$ gem list --no-version | xargs gem uninstall -ax
или
$ sudo gem list --no-version | xargs sudo gem uninstall -ax
В зависимости от того, что вы хотите, вам может потребоваться выполнить оба, потому что "список драгоценных камней" и "список судовых драгоценных камней" предоставляют независимые списки.
Не смешивайте обычный "список драгоценных камней" с помощью sudo-ed "удаления драгоценных камней" или иным способом, иначе вы можете удалить удаленные sudo gems (прежние) или получить много ошибок (последние).
Если вы используете Rubygems версии 2.1.0 или новее, вы можете попробовать: gem uninstall --all
.
Сначала убедитесь, что у вас есть как минимум gem version 2.1.0
gem update --system
gem --version
# 2.6.4
Чтобы просто удалить программу:
gem uninstall --all
Вам может понадобиться команда sudo
:
sudo gem uninstall --all
Если вам нравится делать это с помощью ruby:
ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"
Приветствия
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 Готово!!
Единственная команда помогла мне очистить все драгоценные камни и игнорировать драгоценные камни по умолчанию, которые невозможно удалить.
for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
Я сделал это не так давно (такая же ситуация с переключателем RVM для плаката-ребенка):
gem list | cut -d" " -f1 | sudo xargs gem uninstall -Iax
Принимает список всех драгоценных камней (включая материал версии), разрезает его, чтобы сохранить только имя жемчужины, а затем удаляет все версии таких драгоценных камней.
sudo
полезен только в том случае, если у вас есть драгоценные камни, установленные в системе, и не следует включать, если это необходимо.
При попытке удалить драгоценные камни, установленные как 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
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
, если у вас появятся проблемы с правами.
И для тех из вас, кто здесь, потому что вы хотите удалить все драгоценные камни с определенным префиксом (ах, я смотрю на вас, aws-sdk!) вы можете запустить что-то вроде этого:
gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx
Очевидно, в ваш запрос помещается вместо aws-sdk-
. Тебе нужен -I
, чтобы игнорировать зависимости.
Принятая форма Андо более ранний ответ