Как я могу удалить драгоценный камень по умолчанию? ! хотите удалить версию JSON Gem 1.7.7
У меня такое же приложение rails в OSX и Ubuntu, я хочу использовать Zeus, чтобы ускорить мой rspec. В Ubuntu Zeus запускается нормально, но в OSX он всегда падает. Наконец я нахожу проблему, https://github.com/burke/zeus/issues/237#issuecomment-18700462, разница между OSX и Ubuntu заключается в версии json gem. Я использую gem list | grep json
gem list | grep json
Ubuntu показывает
json (1.8.1, 1.8.0, 1.5.3)
json_pure (1.5.3)
json_spec (1.1.1)
jsonpath (0.5.3)
multi_json (1.8.2, 1.7.8, 1.0.3)
Mac показывает
json (1.8.1, 1.7.7)
json_spec (1.1.1)
jsonpath (0.5.5, 0.5.3)
multi_json (1.8.2, 1.7.8)
поэтому я хочу удалить версию 1.7.7 json gem, чтобы запустить Zeus, но
gem uninstall json -v 1.7.7
ERROR: While executing gem ... (Gem::InstallError)
gem "json" cannot be uninstalled because it is a default gem
Что я должен делать?
Ответы
Ответ 1
Исходя из того, что я могу сказать, нет простой команды, которая может переместить файл gemspec из папки по умолчанию в папку не по умолчанию. Это хорошо из того, что я могу сказать, но здесь приведены инструкции о том, как сделать это вручную.
Найти расположение спецификации по умолчанию. Самый простой способ - зайти в irb
и выполнить следующую команду
irb(main):001:0> File.join Gem::Specification.default_specifications_dir
=> "/Users/newdark/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/specifications/default"
Это строка кода, которая строит путь gemspec
https://github.com/rubygems/rubygems/blob/v2.6.13/lib/rubygems/installer.rb#L420
Как только вы получите путь к файлу, вам просто нужно переместить имя и версию гема из папки по умолчанию в родительскую папку.
$ cd /Users/newdark/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/specifications/default
$ mv json-1.7.7.gemspec ../
если вы сделаете gem list -d
, вы больше не увидите слова Installed at (default)
рядом с версией гема json-1.7.7. затем вы можете запустить gem uninstall json -v 1.7.7
без боя с вами. Если вы хотите отменить все это, просто запустите gem install json -v 1.7.7 --default
Ответ 2
У меня возникла проблема с стандартными версиями драгоценных камней, и принятый ответ не сработал у меня. Для меня работала установка такой же версии, как и по умолчанию, но без флага по умолчанию, а затем ее удаление.
gem install json -v '1.7.7'
Затем, как только это будет завершено:
gem uninstall json -v '1.7.7'
Ответ 3
может быть, это поможет вам....
bundle exec gem uninstall GEM_NAME
Если выше cmd не работает, попробуйте это
выполните это либо в irb, либо в собственном script:
`gem list --no-versions`.split("\n").each do |gem|
`gem list -d #{gem}`.gsub(/Installed at(.*):.*/).each do |dir|
dir = dir.gsub(/Installed at(.*): /,'').gsub("\n", '')
system "gem uninstall #{gem} -aIx -i #{dir}"
end
end
если выше оба отказались, попробуйте это
перейдите в каталог rvm, где все драгоценные камни устанавливаются, а затем вручную удаляйте этот камень, который вы хотите... например, в моем случае местоположение моего gem dir -/home/user_name/.rvm/gems/ruby-1.9.3 -p194/камни