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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

1回答

2763閲覧

bundle installでエラーとなる

ryomannn

総合スコア16

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

0グッド

0クリップ

投稿2022/10/23 10:28

編集2022/10/23 10:39

環境

WSL2にubuntu20.04.5LTS
rubyのベースイメージ ruby:alpine3.16

gemfile

source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem 'rails', '~> 7.0', '>= 7.0.4'

実現したいこと

docker でruby3.0以上rails7.0以上の環境を構築したい

発生している問題・エラーメッセージ

bundle install時のエラーが

Fetching gem metadata from https://rubygems.org/........... Installing websocket-driver 0.7.5 with native extensions Installing racc 1.6.0 with native extensions Installing nio4r 2.5.8 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /usr/local/bundle/gems/racc-1.6.0/ext/racc/cparse /usr/local/bin/ruby -I /usr/local/lib/ruby/3.0.0 -r ./siteconf20221023-10158-pz1jhy.rb extconf.rb checking for rb_block_call()... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/local/bin/$(RUBY_BASE_NAME) /usr/local/lib/ruby/3.0.0/mkmf.rb:471:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /usr/local/lib/ruby/3.0.0/mkmf.rb:564:in `try_link0' from /usr/local/lib/ruby/3.0.0/mkmf.rb:582:in `try_link' from /usr/local/lib/ruby/3.0.0/mkmf.rb:794:in `try_func' from /usr/local/lib/ruby/3.0.0/mkmf.rb:1083:in `block in have_func' from /usr/local/lib/ruby/3.0.0/mkmf.rb:971:in `block in checking_for' from /usr/local/lib/ruby/3.0.0/mkmf.rb:361:in `block (2 levels) in postpone' from /usr/local/lib/ruby/3.0.0/mkmf.rb:331:in `open' from /usr/local/lib/ruby/3.0.0/mkmf.rb:361:in `block in postpone' from /usr/local/lib/ruby/3.0.0/mkmf.rb:331:in `open' from /usr/local/lib/ruby/3.0.0/mkmf.rb:357:in `postpone' from /usr/local/lib/ruby/3.0.0/mkmf.rb:970:in `checking_for' from /usr/local/lib/ruby/3.0.0/mkmf.rb:1082:in `have_func' from extconf.rb:6:in `<main>' To see why this extension failed to compile, please check the mkmf.log which can be found here: /usr/local/bundle/extensions/x86_64-linux-musl/3.0.0/racc-1.6.0/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /usr/local/bundle/gems/racc-1.6.0 for inspection. Results logged to /usr/local/bundle/extensions/x86_64-linux-musl/3.0.0/racc-1.6.0/gem_make.out /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:93:in `run' /usr/local/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:47:in `block in build' /usr/local/lib/ruby/3.0.0/tempfile.rb:317:in `open' /usr/local/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:26:in `build' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:159:in `build_extension' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:193:in `block in build_extensions' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:190:in `each' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:190:in `build_extensions' /usr/local/lib/ruby/3.0.0/rubygems/installer.rb:837:in `build_extensions' /usr/local/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:71:in `build_extensions' /usr/local/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:28:in `install' /usr/local/lib/ruby/3.0.0/bundler/source/rubygems.rb:204:in `install' /usr/local/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:54:in `install' /usr/local/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:16:in `install_from_spec' /usr/local/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:186:in `do_install' /usr/local/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:177:in `block in worker_pool' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:62:in `apply_func' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:57:in `block in process_queue' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:54:in `loop' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:54:in `process_queue' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:91:in `block (2 levels) in create_threads' An error occurred while installing racc (1.6.0), and Bundler cannot continue. In Gemfile: rails was resolved to 7.0.4, which depends on actioncable was resolved to 7.0.4, which depends on actionpack was resolved to 7.0.4, which depends on actionview was resolved to 7.0.4, which depends on rails-dom-testing was resolved to 2.0.3, which depends on nokogiri was resolved to 1.13.9, which depends on racc Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /usr/local/bundle/gems/websocket-driver-0.7.5/ext/websocket-driver /usr/local/bin/ruby -I /usr/local/lib/ruby/3.0.0 -r ./siteconf20221023-10158-di60ku.rb extconf.rb creating Makefile current directory: /usr/local/bundle/gems/websocket-driver-0.7.5/ext/websocket-driver make DESTDIR\= clean current directory: /usr/local/bundle/gems/websocket-driver-0.7.5/ext/websocket-driver make DESTDIR\= make failedNo such file or directory - make Gem files will remain installed in /usr/local/bundle/gems/websocket-driver-0.7.5 for inspection. Results logged to /usr/local/bundle/extensions/x86_64-linux-musl/3.0.0/websocket-driver-0.7.5/gem_make.out /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:74:in `rescue in run' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:73:in `run' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:44:in `block in make' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:36:in `each' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:36:in `make' /usr/local/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:63:in `block in build' /usr/local/lib/ruby/3.0.0/tempfile.rb:317:in `open' /usr/local/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:26:in `build' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:159:in `build_extension' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:193:in `block in build_extensions' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:190:in `each' /usr/local/lib/ruby/3.0.0/rubygems/ext/builder.rb:190:in `build_extensions' /usr/local/lib/ruby/3.0.0/rubygems/installer.rb:837:in `build_extensions' /usr/local/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:71:in `build_extensions' /usr/local/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:28:in `install' /usr/local/lib/ruby/3.0.0/bundler/source/rubygems.rb:204:in `install' /usr/local/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:54:in `install' /usr/local/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:16:in `install_from_spec' /usr/local/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:186:in `do_install' /usr/local/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:177:in `block in worker_pool' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:62:in `apply_func' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:57:in `block in process_queue' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:54:in `loop' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:54:in `process_queue' /usr/local/lib/ruby/3.0.0/bundler/worker.rb:91:in `block (2 levels) in create_threads' An error occurred while installing websocket-driver (0.7.5), and Bundler cannot continue. In Gemfile: rails was resolved to 7.0.4, which depends on actioncable was resolved to 7.0.4, which depends on websocket-driver

エラーメッセージを

書いてあることを読む限り、

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. An error occurred while installing racc (1.6.0), and Bundler cannot continue. An error occurred while installing websocket-driver (0.7.5), and Bundler cannot continue.

主にこの3つが原因ぽい。

native extensionはgemが依存しているCなどで書かれたライブラリーのことらしい。

始めは

An error occurred while installing nio4r (2.5.8), and Bundler cannot continue.

というエラーも出ていたのですが
いろいろ調べているとruby-devをインストールするといいらしいので、

apk add --upgrade ruby-dev

を実行するとしたら消えました。

ここから詰まったのでエラーになっているgemを単体でインストールしてみましたが、エラー文は同じでした。

一応

/app # cat /usr/local/bundle/extensions/x86_64-linux-musl/3.0.0/racc-1.6.0/mkmf.log "gcc -o conftest -I/usr/local/include/ruby-3.0.0/x86_64-linux-musl -I/usr/local/include/ruby-3.0.0/ruby/backward -I/usr/local/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -fPIC conftest.c -L. -L/usr/local/lib -Wl,-rpath,/usr/local/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,--no-as-needed -Wl,-rpath,/usr/local/lib -L/usr/local/lib -lruby -lm -lc" checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(int argc, char **argv) 4: { 5: return !!argv[argc]; 6: } /* end */

ログを確認しましたが、ここから何かがわかるとは思えないので詰まっています。
(xcodeの解決策ばっかり出てくる)

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

クリップした質問は、後からいつでもMYページで確認できます。

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

failedNo such file or directory - make

というエラーメッセジがあったのでmakeコマンド用のbinファイルがないのではないかと思って調べていたら、
alpineには基本コマンドが最低限しか入っていないことは知っていたがmakeすらなかったらしい。

他にも記事を調べていくと
gccなども一緒にインストールしているものがあり、

/app # cat /usr/local/bundle/extensions/x86_64-linux-musl/3.0.0/racc-1.6.0/mkmf.log "gcc -o conftest -I/usr/local/include/ruby-3.0.0/x86_64-linux-musl -I/usr/local/include/ruby-3.0.0/ruby/backward -I/usr/local/include/ruby-3.0.0 -I....

とログに明らかにgccを使っていそうな場所があったので

apk install make gcc

を実行した。

次にログに

/usr/local/include/ruby-3.0.0/ruby/defines.h:16:10: fatal error: stdio.h: No such file or directory 16 | #include <stdio.h> | ^~~~~~~~~ compilation terminated. checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(int argc, char **argv) 4: { 5: return !!argv[argc]; 6: } /* end */

というエラーが新しく出るようになったので、
https://stackoverflow.com/questions/19580758/gcc-fatal-error-stdio-h-no-such-file-or-directory

ここを参考に

apk add libc-dev

をインストールしたら
bundle install通りました。

alpineでインストール環境を構築するときは要注意。
まとめとして

apk add --upgrade ruby-dev make gcc libc-dev

をDockerfileに追記すれば動くはず。

投稿2022/10/23 11:22

ryomannn

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問