Help us understand the problem. What is going on with this article?

Vagrantで構築した開発環境内でbundle installがフリーズする場合の解決策

More than 5 years have passed since last update.

1. 概要

以下の環境下でbundle installすると、途中でフリーズしてしまう現象が発生した(Installing actionviewのところでフリーズしてしまう)。

  • Mac OS X 10.9.4
  • VirtualBox 4.3.16
  • Vagrant 1.6.5
  • CentOS 6.5
  • Chef Solo 11.14.0.rc2
  • Ruby 2.1.2(rbenv)
  • Ruby on Rails 4.1.1
  • 共有フォルダ: NFS

また、BoxはVagrantbox.esに登録されている以下のものを利用した。

https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

2. 解決策

結論からいうと、Boxを変えればよい。
例えば、Vagrant Cloudで公開されているChef公式のCentOSであれば問題なくbundle installが通った。

Box以外まったく同じ環境で、いくつかのBoxを試したが、2creative/vagrant-centosのみフリーズした(私の力不足で、詳細な原因は分からなかった……)。

当該Boxはいくつかのチュートリアル系記事でインストールすべきBoxとして取り上げられている。
もし同じような現象が発生したら、Chef公式のBoxを試してみるとよい。

3. 考えられる原因

参考までに、解決に至るまでに考えた原因について書く。

(1) rubygems.comに接続できない?(ネットワークの問題)

いくつかのGemがインストールできている時点で、ネットワークの問題ではない。

(2) Linuxのパッケージ依存の問題?

パッケージの問題であれば、その旨のエラーが出力されるはず。

(3) NFSのsynced_folderのパーミッションの問題?

NFSのパーミッション問題は検索するといくつも出てくるようで、疑ってみた。

MacでNFSを有効にすると、Vagrant内の共有フォルダのuid:gid501:20になる。
これがvagrantユーザの各IDと異なり問題が起きていると考えた。

しかしそうであれば(1)と同じく1つもGemがインストールされるはずはない。

(4) CPU/メモリが逼迫している?

十分に増やして試してみたが、現象は再現された。

(5) Boxの問題?

Boxを変えたら現象は再現されなくなった。
ただ、前述のとおり原因は不明。

4. 備考

Vagrantは現在rsyncによる共有フォルダの同期が実装されている。

しかし、これはホスト側→ゲスト側の片方向のみの同期で、pull型はまだ実装されていない。
そのため、開発に使うことはまだ現実的ではない(例えばrails gなど、ゲスト側で生成したファイルがホスト側に同期されない)。

NFSはUNIX系OS専用ということもあり、双方向rsyncによる同期が実現されればより汎用性の高い開発環境となり得る。

5. おわりに

上記現象について、原因に心当たりのある方はぜひコメントの方をよろしくお願いいたします。

zenizh
プロダクトマネージャ/エンジニア。共著に『現場で使えるRuby on Rails 5』。妻と娘、猫とのんびり暮らしています。
https://product-management.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした