QA@IT

ruby2.0.0-p0でgem update するとrakeのconflict が起きる

3945 PV

CentOS6.3で rbenvを使い、一度ruby2.0.0-p0を削除後
もう一度インストールしてからgem update すると

Updating rake
Fetching: rake-10.1.0.gem (100%)
rake's executable "rake" conflicts with /home/username/.rbenv/versions/2.0.0-p0/bin/rake
Overwrite the executable? [yN]

Updating rdoc
Fetching: rdoc-4.0.1.gem (100%)
rdoc's executable "rdoc" conflicts with /home/username/.rbenv/versions/2.0.0-p0/bin/rdoc
Overwrite the executable? [yN]  y
rdoc's executable "ri" conflicts with /home/username/.rbenv/versions/2.0.0-p0/bin/ri
Overwrite the executable? [yN]  

と出たために全て上書きで処理をしたのですが、
上書き処理で良かったのでしょうか?

それと削除してからのインストールなのに何故既にファイルが存在しているのかがわかりません。
どんなときにこのconflictは起きるのでしょうか…?

  • 「一度ruby2.0.0-p0を削除後 」 というのはどのような方法をとられたのでしょうか。 -
  • `rbenv uninstall ruby2.0.0-p0`を実行しました。 -

回答

rake, rdoc, riはgemとして提供されていますが、Rubyをインストールした時に最初からそれらのツールもインストールされた状態になっています。組込みgemという感じですね。

Rubyのバージョンがリリースされたばかりの最新で無い場合は、実際にgemでリリースされているものよりも古くなっている可能性が高いです。
そのため、gem updateを実行し全てのgemを更新しようとすると、それらのツールも更新される事になります。

また、bin以下にコマンドをインストールするgemを更新すると更新時に上書きして大丈夫か確認されます。今回のconflictはそれです。

rake, rdoc, riも、実行可能なコマンドも提供しているので、更新しようとすると上書きの確認が出ます。
特定のバージョンじゃなきゃ困るという場合で無い限りは、上書きで処理してしまって問題ありません。

編集 履歴 (0)
  • なるほど、標準に添付されてた古い方のgemがgem updateで新しいものに上書きされるのですね。発生原因がわかってスッキリしました。ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。