有些情况下,我想恢复和卸载以前的所有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)
bsw*_*ton 44
您还可以构建一个新的Gemfile并运行bundle clean --force.这将删除未包含在新Gemfile中的所有其他gem.
Thi*_*lli 27
最简单的不同版本,跳过剪切步骤,利用'--no-version'选项:
gem list --no-version |xargs gem uninstall -ax
Run Code Online (Sandbox Code Playgroud)
由于你要删除所有内容,我认为不需要"我"选项.每当宝石被移除时,它都没问题.
使用其中之一
$ 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(前者)或者出现很多错误(后者).
首先确保你至少拥有宝石版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)
对于那些因为想要删除所有带有特定前缀的 gem(啊哈,我正在看着你 aws-sdk!)而在这里的人,你可以运行这样的东西:
gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx
Run Code Online (Sandbox Code Playgroud)
显然把你的查询而不是aws-sdk-. 您需要-I在那里忽略依赖项。
采用安藤早先的回答
红宝石 >= 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 帐户密码完成!!
如果你喜欢使用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)
干杯
唯一的命令帮助我清理了所有 gems 并忽略了无法卸载的默认 gems
for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
Run Code Online (Sandbox Code Playgroud)