有些情况下我想恢复和卸载之前的所有gem安装。
例如,我需要帮助朋友迁移他们的rails开发机器以使用RVM。正如他们以前使用系统范围的gem
一样,他在处理多个项目时遇到了许多麻烦。 基本上,他是RVM转换的典型代表。
如何优雅地卸载其OSX系统上的所有宝石?
答案 0 :(得分:390)
Rubygems> = 2.1.0
gem uninstall -aIx
a
删除所有版本
I
忽略了依赖关系
x
包含可执行文件
Rubgems< 2.1.0 强>
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
答案 1 :(得分:42)
您还可以构建一个新的Gemfile并运行bundle clean --force
。这将删除未包含在新Gemfile中的所有其他gem。
答案 2 :(得分:27)
最简单的不同版本,跳过剪切步骤,利用'--no-version'选项:
gem list --no-version |xargs gem uninstall -ax
由于您要删除所有内容,因此我认为不需要“我”选项。每当宝石被移除时,都没关系。
答案 3 :(得分:9)
使用
$ gem list --no-version | xargs gem uninstall -ax
或
$ sudo gem list --no-version | xargs sudo gem uninstall -ax
根据您的需要,您可能需要执行两者,因为“gem list”和“sudo gem list”提供了独立的列表。
不要将普通的“宝石列表”与sudo-ed“gem uninstall”混合使用,否则你可能最终卸载sudo-installed gem(前者)或者遇到很多错误(后者)。< / p>
答案 4 :(得分:8)
如果您使用的是Rubygems 2.1.0或更高版本,则可以尝试:gem uninstall --all
。
答案 5 :(得分:8)
首先确保您至少拥有gem版本2.1.0
gem update --system
gem --version
# 2.6.4
要卸载,只需运行:
gem uninstall --all
您可能需要使用sudo
命令:
sudo gem uninstall --all
答案 6 :(得分:5)
如果您喜欢使用ruby:
ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"
干杯
答案 7 :(得分:3)
Rubygems&gt; = 2.1.0
gem uninstall -aIx
如果终端返回错误
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
输入您的mac os帐户密码 完成!!
答案 8 :(得分:2)
唯一的命令帮助我清除了所有宝石并忽略了无法卸载的默认宝石
for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
答案 9 :(得分:2)
对于那些在这里的人,因为你想删除所有具有特定前缀的宝石( ahem 我看着你的aws-sdk!)你可以运行这样的东西:
from conjugate_prior import BetaBinomial
prior_model = BetaBinomial(1,1) # Uninformative prior
updated_model = prior_model.update(heads, tails)
credible_interval = updated_model.posterior(0.45, 0.55)
print ("There's {p:.2f}% chance that the coin is fair".format(p=credible_interval*100))
显然是在您的查询中而不是gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx
。你需要aws-sdk-
来忽略依赖关系。
采用表格Ando的earlier answer
答案 10 :(得分:1)
我不久前就这样做了(同样的海报儿童RVM切换器情况):
gem list | cut -d" " -f1 | sudo xargs gem uninstall -Iax
获取所有宝石的列表(包括版本内容),将其剪切为仅保留宝石名称,然后卸载此类宝石的所有版本。
sudo
仅在您在系统范围内安装了宝石时才有用,除非必要,否则不应包括。
答案 11 :(得分:0)
当尝试删除以root身份安装的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
答案 12 :(得分:0)
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这里排除默认宝石。所有其他宝石将被卸载。如果您收到权限问题,也可以在sudo
之前加上它。