[英]How can I remove a default gem? ! want to uninstall a gem 1.7.7 version of json
我在 OSX 和 Ubuntu 中有相同的 rails 应用程序,我想使用 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
我应该怎么办?
因此,根据我所知道的,没有简单的命令可以将 gemspec 文件从默认文件夹移动到非默认文件夹。 据我所知,这是一件好事,但这里有关于如何手动执行此操作的说明。
查找默认规范的位置。 最简单的方法是进入irb
并运行以下命令:
irb(main):002:0> Gem.default_specifications_dir => "/Users/user/.rubies/ruby-2.5.7/lib/ruby/gems/2.5.0/specifications/default"
对于较旧的红宝石,它是:
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
获得文件路径后,您只需将 gem 名称和版本从默认文件夹移动到父文件夹。
$ 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
,您应该不会再在 gem 版本 json-1.7.7 旁边看到Installed at (default)
字样。 然后,您可以运行gem uninstall json -v 1.7.7
而不会与您发生冲突。 如果您想撤消这一切,只需运行gem install json -v 1.7.7 --default
我一直在使用默认版本的 gems 时遇到问题,并且接受的答案对我不起作用。 对我有用的是安装与默认版本相同的版本,但没有默认标志,然后将其卸载。
gem install json -v '1.7.7'
然后一旦完成:
gem uninstall json -v '1.7.7'
可能这会帮助你....
bundle exec gem uninstall GEM_NAME
如果上面的 cmd 不起作用,那么试试这个
在 irb 或适当的脚本中执行此操作:
`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,然后手动删除您想要的 gem .. 例如在我的情况下,我的 gem 目录位置是 /home/user_name/.rvm/gems/ruby-1.9.3-p194/宝石
打开你的终端然后
步骤1
打开交互式红宝石
irb
第2步
在里面使用命令
Gem.default_specifications_dir
它会为您提供一个地址,例如:
"/home/user/.rvm/rubies/ruby-2.7.1/lib/ruby/gems/2.7.0/specifications/default"
第 3 步
然后突破 irb 并通过以下方式移动到该地址目录
cd /home/user/.rvm/rubies/ruby-2.7.1/lib/ruby/gems/2.7.0/specifications/default
第4步
只需通过以下方式删除该 gem 的 gemspec 文件:
rm gemname-2.1.4.gemspec
希望这有效!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.