在linux上从ruby 1.9.3升级到ruby 2.0(至少12.04)时会出现意外提示。
rdoc's executable "rdoc" conflicts with /path/bin/rdoc
Overwrite the executable? [yN]
它可以手动覆盖它,但我正在寻找一种方法,我的脚本将自动回复是,而不会停止。
刚刚在rubygems from a year ago上发现了这个问题。我在脚本中使用gem install
因此我认为我可以轻松添加yes | gem install
编辑:
尝试yes | gem install rdoc
,但失败了:
ERROR: Error installing rdoc:
"rdoc" from rdoc conflicts with /usr/local/rubies/2.0.0-p0/bin/rdoc
答案 0 :(得分:3)
您可以预先
yes |
是的,只需反复输入y,然后通过管道传输到标准输入。
(感谢@adamdunson)
答案 1 :(得分:1)
对我来说,使用Ubuntu和Ruby 2.0是的如上所述的prepend解决方案不能像我的自动构建脚本(使用sprinkle gem)中描述的那样工作。
因此,我在构建脚本中添加了一个步骤,在执行安装之前重命名(在我的情况下)/ usr / local / bin / rdoc和/ usr / local / bin / ri。
因此安装重新创建这些文件而没有令人讨厌的提示,我似乎无法以某种方式避免。就个人而言,我认为https://github.com/rubygems/rubygems/pull/280的建议是一个很好的建议,尽管这似乎并没有被社区公开拥抱。
我的解决方案是一个稍微粗略的解决方法,但可能会帮助其他人,直到有更优雅的解决方案。
答案 2 :(得分:1)
--force
为我工作:
gem install --force rdoc
免责声明:这不是--force
的用途,我也不知道为什么yes |
无效。
答案 3 :(得分:0)
答案 4 :(得分:0)
在我的情况下,前缀yes |
不起作用(rubygems验证输入是否为tty)。什么对我有用:
expect <<-DONE
set timeout -1
spawn gem update
expect {
"Overwrite the executable?" { send -- "y\r"; exp_continue }
eof
}
DONE