質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

92.04%

  • Ruby

    3465questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    3122questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • RubyGems

    184questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

[Ruby on Rails]bundle install でのエラー解決方法

解決済

回答 2

投稿 2016/10/15 20:30 ・編集 2016/10/15 21:44

  • 評価
  • クリップ 0
  • VIEW 856

bundle install でエラー

Railsチュートリアルを行っている最中なのですが、
下記エラーが発生し困っております。

解決方法をググって色々探し、試してみたのですが解決できませんでした。

また、関係あるかどうかわかりませんが
プロジェクトディレクトリ内でrails -v を実行するとエラーが表示されます。

vagrant@vagrant-ubuntu-trusty-64:/vagrant/sample_app$ rails -v
/home/vagrant/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/dependency.rb:319:in `
to_specs': Could not find 'railties' (>= 0.a) among 33 total gem(s) (Gem::LoadError
)
Checked in 'GEM_PATH=/vagrant/sample_app/path/ruby/2.3.0', execute `gem env` for mo
re information
        from /home/vagrant/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/dependenc
y.rb:328:in `to_spec'
        from /home/vagrant/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/
kernel_gem.rb:65:in `gem'
        from /home/vagrant/.rvm/gems/ruby-2.3.1/bin/rails:22:in `<main>'
        from /home/vagrant/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `ev
al'
        from /home/vagrant/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<m
ain>'

エラー内容

vagrant@vagrant-ubuntu-trusty-64:/vagrant/sample_app$ bundle install
/*中略*/
Installing nokogiri 1.6.8.1 with native extensions
Using rack-test 0.6.3
Using sprockets 3.7.0
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/vagrant/sample_app/path/ruby/2.3.0/gems/nio4r-1.2.1/ext/nio4r
/home/vagrant/.rvm/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20161015-19290-l2ka0a.rb

extconf.rb
checking for unistd.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_without_gvl()... yes
checking for sys/select.h... yes
checking for poll.h... yes
checking for sys/epoll.h... yes
checking for sys/event.h... no
checking for port.h... no
checking for sys/resource.h... yes
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be

found here:

/vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/mkmf.
log

Text file busy @ unlink_internal - ./siteconf20161015-19290-l2ka0a.rb

Gem files will remain installed in
/vagrant/sample_app/path/ruby/2.3.0/gems/nio4r-1.2.1 for inspection.
Results logged to
/vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/gem_m
ake.out

An error occurred while installing nio4r (1.2.1), and Bundler cannot
continue.
Make sure that `gem install nio4r -v '1.2.1'` succeeds before bundling.

環境

  • Ruby 2.3.1
  • Rails 5.0.0.1
  • Vagrant
  • Ubuntu 14

mkmf.log

have_header: checking for unistd.h... -------------------- yes

checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <unistd.h>
/* end */

--------------------

have_func: checking for rb_thread_blocking_region()... -------------------- no

conftest.c: In function ‘t’:
conftest.c:13:57: error: ‘rb_thread_blocking_region’ undeclared (first use in this function)
 int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_blocking_region; return !p; }
                                                         ^
conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: /*top*/
 4: extern int t(void);
 5: int main(int argc, char **argv)
 6: {
 7:   if (argc > 1000000) {
 8:     printf("%p", &t);
 9:   }
10: 
11:   return 0;
12: }
13: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_blocking_region; return !p; }
/* end */

/tmp/cc8EA8BT.o: In function `t':
/vagrant/sample_app/path/ruby/2.3.0/gems/nio4r-1.2.1/ext/nio4r/conftest.c:14: undefined reference to `rb_thread_blocking_region'
collect2: error: ld returned 1 exit status
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: /*top*/
 4: extern int t(void);
 5: int main(int argc, char **argv)
 6: {
 7:   if (argc > 1000000) {
 8:     printf("%p", &t);
 9:   }
10: 
11:   return 0;
12: }
13: extern void rb_thread_blocking_region();
14: int t(void) { rb_thread_blocking_region(); return 0; }
/* end */

--------------------

have_func: checking for rb_thread_call_without_gvl()... -------------------- yes

conftest.c: In function ‘t’:
conftest.c:13:57: error: ‘rb_thread_call_without_gvl’ undeclared (first use in this function)
 int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_call_without_gvl; return !p; }
                                                         ^
conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: /*top*/
 4: extern int t(void);
 5: int main(int argc, char **argv)
 6: {
 7:   if (argc > 1000000) {
 8:     printf("%p", &t);
 9:   }
10: 
11:   return 0;
12: }
13: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_call_without_gvl; return !p; }
/* end */

checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: /*top*/
 4: extern int t(void);
 5: int main(int argc, char **argv)
 6: {
 7:   if (argc > 1000000) {
 8:     printf("%p", &t);
 9:   }
10: 
11:   return 0;
12: }
13: extern void rb_thread_call_without_gvl();
14: int t(void) { rb_thread_call_without_gvl(); return 0; }
/* end */

--------------------

have_header: checking for sys/select.h... -------------------- yes

checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <sys/select.h>
/* end */

--------------------

have_header: checking for poll.h... -------------------- yes

checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <poll.h>
/* end */

--------------------

have_header: checking for sys/epoll.h... -------------------- yes

checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <sys/epoll.h>
/* end */

--------------------

have_header: checking for sys/event.h... -------------------- no

conftest.c:3:23: fatal error: sys/event.h: No such file or directory
 #include <sys/event.h>
                       ^
compilation terminated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <sys/event.h>
/* end */

--------------------

have_header: checking for port.h... -------------------- no

conftest.c:3:18: fatal error: port.h: No such file or directory
 #include <port.h>
                  ^
compilation terminated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <port.h>
/* end */

--------------------

have_header: checking for sys/resource.h... -------------------- yes

checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <sys/resource.h>
/* end */

--------------------
  • 気になる質問をクリップする

    クリップした質問に回答があった場合に通知・メールを受け取ることができます。

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

自分の環境が以下の状態で

$ cat /etc/os-release | grep VERSION=
VERSION="14.04.5 LTS, Trusty Tahr"

$ rvm -v
rvm 1.27.0 (latest)

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.5.1
  - RUBY VERSION: 2.3.0 (2015-12-25 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: $HOME/.rvm/gems/ruby-2.3.0
  - USER INSTALLATION DIRECTORY: $HOME/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: $HOME/.rvm/rubies/ruby-2.3.0/bin/ruby
  - EXECUTABLE DIRECTORY: $HOME/.rvm/gems/ruby-2.3.0/bin
  - SPEC CACHE DIRECTORY: $HOME/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - $HOME/.rvm/gems/ruby-2.3.0
     - $HOME/.rvm/gems/ruby-2.3.0@global

$ rails -v
Rails 5.0.0.1

nio4rインストールされています

$ gem list | grep nio4r
nio4r (1.2.1)

gem_make.out の内容は以下の通り。

$ head -n 20 gem_make.out
current directory: $HOME/.rvm/gems/ruby-2.3.0/gems/nio4r-1.2.1/ext/nio4r
$HOME/.rvm/rubies/ruby-2.3.0/bin/ruby -r ./siteconf20161015-26705-1jnhbkz.rb extconf.rb
checking for unistd.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_without_gvl()... yes
checking for sys/select.h... yes
checking for poll.h... yes
checking for sys/epoll.h... yes
checking for sys/event.h... no
checking for port.h... no
checking for sys/resource.h... yes
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  $HOME/.rvm/gems/ruby-2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/mkmf.log

current directory: $HOME/.rvm/gems/ruby-2.3.0/gems/nio4r-1.2.1/ext/nio4r
make "DESTDIR=" clean

違いとしてText file busy @ unlink_internalが気になったのでググってみたら、以下のような情報がありました。

投稿 2016/10/15 23:50

編集 2016/10/16 00:17

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

checkベストアンサー

0

bundle install

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/vagrant/sample_app/path/ruby/2.3.0/gems/nio4r-1.2.1/ext/nio4r
/home/vagrant/.rvm/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20161015-19290-l2ka0a.rb

extconf.rb
checking for unistd.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_without_gvl()... yes
checking for sys/select.h... yes
checking for poll.h... yes
checking for sys/epoll.h... yes
checking for sys/event.h... no
checking for port.h... no
checking for sys/resource.h... yes
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be

found here:

/vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/mkmf.
log

Text file busy @ unlink_internal - ./siteconf20161015-19290-l2ka0a.rb

Gem files will remain installed in
/vagrant/sample_app/path/ruby/2.3.0/gems/nio4r-1.2.1 for inspection.
Results logged to
/vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/gem_m
ake.out

An error occurred while installing nio4r (1.2.1), and Bundler cannot
continue.
Make sure that `gem install nio4r -v '1.2.1'` succeeds before bundling.

と言う部分から、依存関係で必要になったnio4rというパッケージのインストールに失敗しています。失敗した理由はnio4rのコンパイルに失敗したからです。コンパイルに失敗した理由は、

To see why this extension failed to compile, please check the mkmf.log which can be

found here:

/vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/mkmf.
log

と言う記載通り、ログファイルである/vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/mkmf.logを確認する必要があります。該当のログファイルの内容を確認してください。

※ ログファイルの内容がよくわからないから貼り付けるという場合は、コメントでは無く質問に追記するようにしてください。コメント欄は狭く、また、Markdownに対応していないため、読みづらくなる場合があります。


【追記】

Windows上でVagrantを使って、そのままゲスト側でWindows領域をマウントし、そのマウントした場所で色々操作しようとした場合におきる不具合の可能性があります。下記の何れかをお試しください。

  1. マウントしている/vagrant上でファイルを一切使わず、全てを別の場所にコピーして、そこで実行してみてください。rubyのパスなども全て変更してください。
  2. Synced FolderのtypeをVirtualBoxからrsyncに変えてみてください。下記設定を追加すれば変更できます。
    config.vm.synced_folder ".", "/vagrant", type: "rsync"
    注意点として、Windowsにrsyncが必要です。また、一部のバージョンでWindowsのみ失敗するバグが報告されています。また、rysncタイプはvagrant upしたときやvagrant rsyncした時しか同期されません。
    やり方の参考: http://qiita.com/derui@github/items/44977e0de5b892009b2f
  3. ホストにWindowsを使わず、MacやLinuxを使ってください。

どういうことかというと、Windows版VirtualBoxでLinuxから共有領域をマウントしたとき、シンボリックリンクが作れない、chmodやchownが正しく動かない、などの制限があり、実行される内容によっては失敗する場合があるからです。

投稿 2016/10/15 20:54

編集 2016/10/15 22:15

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/10/15 21:49

    回答ありがとうございます。

    mkmf.logファイルの内容を追記しました。
    ※文字数制限の関係で一部省略してあります。

    ログ・ファイルの内容を確認しましたがわたしにはよくわかりません。
    もし何かわかるようでしたらご教授お願い致します。

    キャンセル

  • 2016/10/15 21:58

    ログファイルの中身はこれだけですか…configチェックの内容しか載ってなくて、ちょっと原因が違うかも知れません。

    うーん、もしかして、VagrantはWindowsで動作させて、Windows上のフォルダを直接マウント(/vagarntにアクセスすると直接Windowsになるような)していますか?

    キャンセル

  • 2016/10/15 22:01

    vagrantのマウントの設定はデフォルトのままなので
    そうかもしれません

    キャンセル

  • 2016/10/15 22:17

    Windows特有の問題かも知れません。追記を参考にしてみてください。

    キャンセル

  • 2016/10/15 22:26

    丁寧な回答ありがとうございます。
    追記していただいた内容の「1」についてはすでに試していて、同じエラーで失敗しました。
    rubyを2.2.5にダウングレードもしてみましたが...

    「2」「3」についてはまだ試していないので試してみます。

    キャンセル

  • 2016/10/15 22:30

    /vagrant/sample_appを別のフォルダ/home/vagrant/sample_appに持って行っても駄目ですか?その配下の処理でエラーが起きているような気がします。

    キャンセル

  • 2016/10/15 22:33

    だめでした...

    キャンセル

  • 2016/10/15 23:23

    gem_make.out ファイルが残っているのであれば、以下のように内容を確認してみてはどうでしょう。

    tail -n 40 /vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/gem_make.out

    キャンセル

  • 2016/10/15 23:24

    うーん、あとは
    /vagrant/sample_app/path/ruby/2.3.0/extensions/x86_64-linux/2.3.0/nio4r-1.2.1/gem_make.out
    の中身を確認するぐらいでしょうか。内容にエラーが無いか見てみてください。

    キャンセル

  • 2016/10/16 22:21

    /home/vagrant に新しくプロジェクトを作り直したらとりあえず動作したので、
    rsyncで必要なファイルを同期させて、/home/vagrant で実行するようにしました。

    もともとのプロジェクトはどう頑張っても動作しませんでした...

    おかげさまで、とりあえず解決しました。
    回答ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

92.04%

関連した質問

同じタグがついた質問を見る

  • Ruby

    3465questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    3122questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • RubyGems

    184questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

閲覧数の多いRubyの質問