繁体   English   中英

如何删除默认宝石? ! 想卸载一个gem 1.7.7版本的json

[英]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 文件从默认文件夹移动到非默认文件夹。 据我所知,这是一件好事,但这里有关于如何手动执行此操作的说明。

  1. 查找默认规范的位置。 最简单的方法是进入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

  1. 获得文件路径后,您只需将 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM