卸载所有安装的gem,在OSX?
有些情况下,我想恢复和卸载所有以前的gem安装。
例如,我需要帮助一个朋友迁移他们的Rails开发机器来使用RVM。 由于他们之前使用过全系统的gem
,他在处理多个项目时遇到了许多麻烦。 从本质上讲,他是RVM转换的海报小孩。
我如何优雅地卸载他的OSX系统上的所有gem?
Rubygems> = 2.1.0
gem uninstall -aIx
Rubgems <2.1.0
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
你也可以build立一个新的Gemfile并运行bundle clean --force
。 这将删除所有未包含在新Gemfile中的其他gem。
一个最不同的版本,跳过切割步骤,利用' – 无版本'选项:
gem list --no-version |xargs gem uninstall -ax
既然你正在删除所有的东西,我不认为需要“我”选项。 每当gem被删除,就没事了。
使用任一
$ gem list --no-version | xargs gem uninstall -ax
要么
$ sudo gem list --no-version | xargs sudo gem uninstall -ax
根据你想要的,你可能需要执行两个,因为“gem列表”和“sudogem列表”提供独立的名单。
不要将正常的“gem列表”与sudo-ed“gem uninstall”混合在一起,否则最终可能会卸载sudo-gem(former)或者出现很多错误(后者)。
如果您使用Rubygems 2.1.0或更高版本,则可以尝试: gem uninstall --all
。
首先确保你至less有gem版本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
如果terminal返回低于错误
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
并input您的mac os帐号密码完成!
唯一的命令帮助我清理所有的gem,并忽略了不能卸载的默认gem
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
把所有的gem(包括版本的东西)的名单,削减它只保留gem的名称,然后卸载这些gem的所有版本。
只有在系统安装了gem的情况下, sudo
才有用,除非必要,否则不应该包含。
当试图删除安装为根的gem时,xargs似乎在试图卸载默认gem时遇到错误时停止:
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这里是不包含默认的gem。 所有其他的gem将被卸载。 如果您遇到许可问题,也可以在sudo
之前加上sudo
。
而对于你们这些人来说,因为你想删除所有带有特定前缀的gem( 呃,我正在看你aws-sdk!),你可以运行如下的东西:
gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx
显然把你的查询,而不是aws-sdk-
。 你需要在那里忽略依赖。
采用安藤早先的答案