8

在 linux(至少 12.04)上从 ruby​​ 1.9.3 升级到 ruby​​ 2.0 时,您会收到意外提示。

rdoc's executable "rdoc" conflicts with /path/bin/rdoc
Overwrite the executable? [yN]  

手动覆盖它可以正常工作,但我正在寻找一种方法,让我的脚本可以自动回复“是”而不会停止。

一年前刚刚在 ruby​​gems 上发现了这个问题。我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
4

5 回答 5

3

你可以预先

 yes |

是的,只是一遍又一遍地输入 y,然后通过管道传输到标准输入。

(感谢@adamdunson)

于 2013-05-08T21:08:08.453 回答
2

--force为我工作:

gem install --force rdoc

免责声明:这不是--force目的,我不知道为什么yes |不起作用。

于 2016-03-28T22:50:12.457 回答
1

对使用 Ubuntu 和 Ruby 2.0 的我来说,是 | 如上所述的前置解决方案没有像我的自动构建脚本中描述的那样工作(使用洒宝石)。

因此,我在构建脚本中添加了一个步骤,以在执行安装之前重命名(在我的情况下)/usr/local/bin/rdoc 和 /usr/local/bin/ri。

因此,安装重新创建了这些文件而没有我似乎无法避免的讨厌提示。我个人认为https://github.com/rubygems/rubygems/pull/280的建议是一个很好的建议,尽管社区似乎并未张开双臂接受这一建议。

我的解决方案是一个有点粗略的解决方法,但可能会帮助其他人,直到有一个更优雅的修复。

于 2014-02-19T06:40:29.880 回答
0

实际上,你不应该说是。这目前是 Ruby 2.0 的一个错误。我自己的解决方法(无论如何我都会使用它,即使这不是问题!)是使用 gemset 处理程序(我正在使用 rbenv-gemset,现在使用 rbenv)。

于 2013-07-20T21:07:55.673 回答
0

在我的情况下,前缀yes |不起作用(rubygems 验证输入是 tty)。什么对我有用:

expect <<-DONE
    set timeout -1
    spawn gem update
    expect {
        "Overwrite the executable?" { send -- "y\r"; exp_continue }
        eof
    }
DONE
于 2019-01-24T11:48:07.307 回答