在OSX中卸载所有已安装的gem?

crf*_*ftr 167 ruby rubygems

有些情况下,我想恢复和卸载以前的所有gem安装.

例如,我需要帮助朋友迁移他们的rails开发机器以使用RVM.由于他们以前使用过系统gem,他在处理多个项目时遇到了许多麻烦. 从本质上讲,他是RVM转换的典型代表.

我怎样才能优雅地卸载他的OSX系统上的所有宝石?

crf*_*ftr 406

Rubygems> = 2.1.0

gem uninstall -aIx
Run Code Online (Sandbox Code Playgroud)

a删除所有版本
I忽略依赖项
x包括可执行文件

Rubgems <2.1.0

for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
Run Code Online (Sandbox Code Playgroud)

  • 宝石清单| cut -d"" - f1 | sudo xargs gem uninstall -Iax -worked for me (5认同)
  • 不起作用:`错误:执行gem时...(Gem :: InstallError)gem"test-unit"无法卸载,因为它是默认的gem`(gem 2.0.3) (4认同)
  • 当然,你需要重新安装一个默认宝石的理智列表,对我来说是:"gem install bundler json minitest rake rdoc" (3认同)

bsw*_*ton 44

您还可以构建一个新的Gemfile并运行bundle clean --force.这将删除未包含在新Gemfile中的所有其他gem.

  • 这非常有用:) (3认同)
  • 是的,这是最好的答案.我觉得OP应该选择这个帖子2.0.0. (2认同)
  • 这当然对我有用,比其他版本更优雅 (2认同)

Thi*_*lli 27

最简单的不同版本,跳过剪切步骤,利用'--no-version'选项:

gem list --no-version |xargs gem uninstall -ax
Run Code Online (Sandbox Code Playgroud)

由于你要删除所有内容,我认为不需要"我"选项.每当宝石被移除时,它都没问题.


aer*_*ino 9

使用其中之一

$ gem list --no-version | xargs gem uninstall -ax
Run Code Online (Sandbox Code Playgroud)

要么

$ sudo gem list --no-version | xargs sudo gem uninstall -ax
Run Code Online (Sandbox Code Playgroud)

根据您的需要,您可能需要执行两者,因为"gem list"和"sudo gem list"提供了独立的列表.

不要将普通的"宝石列表"与sudo-ed"gem uninstall"混合使用,否则你可能最终卸载sudo-installed gem(前者)或者出现很多错误(后者).


rrr*_*rub 8

如果您使用的是Rubygems 2.1.0或更高版本,则可以尝试:gem uninstall --all.

  • 它应该是'宝石'而不是'宝石'. (3认同)

col*_*ect 8

首先确保你至少拥有宝石版2.1.0

gem update --system
gem --version
# 2.6.4
Run Code Online (Sandbox Code Playgroud)

要卸载只需运行:

gem uninstall --all
Run Code Online (Sandbox Code Playgroud)

您可能需要使用以下sudo命令:

sudo gem uninstall --all
Run Code Online (Sandbox Code Playgroud)


Tre*_*ell 8

对于那些因为想要删除所有带有特定前缀的 gem(啊哈,我正在看着你 aws-sdk!)而在这里的人,你可以运行这样的东西:

gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx
Run Code Online (Sandbox Code Playgroud)

显然把你的查询而不是aws-sdk-. 您需要-I在那里忽略依赖项。

采用安藤早先的回答


Kir*_* A. 7

红宝石 >= 2.1.0

gem uninstall -aIx
Run Code Online (Sandbox Code Playgroud)

如果终端返回以下错误

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Run Code Online (Sandbox Code Playgroud)

然后写上面的命令如下

sudo gem uninstall -aIx
Run Code Online (Sandbox Code Playgroud)

并输入您的 mac os 帐户密码完成!!


Har*_*ina 5

如果你喜欢使用ruby:

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

干杯


Att*_*one 5

唯一的命令帮助我清理了所有 gems 并忽略了无法卸载的默认 gems

for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
Run Code Online (Sandbox Code Playgroud)