1. ホーム
  2. ruby-on-rails

[解決済み] Ubuntu 18.04で「extconf.rbが失敗した」ため「railsのインストールに失敗した」。

2022-02-17 01:44:21

質問

Railsのインストールに失敗しています。

背景 私の(新品の)システム=Ubuntu 18.04、Ruby 2.6.0、最新のrvmとbundlerをインストールし更新しています。Rubyをインストールした後、最初にやったことは sudo apt install ruby-railtiessudo apt install rails ...なぜ私が gem install . その後、私は一度も rails new しかし、私は した 一度部分的に実行したのですが、失敗してしまい、そこからが本題でした。

と入力すると rails -v こうなるんです。

Traceback (most recent call last):
    4: from /home/globewalldesk/.rvm/gems/ruby-2.6.0/bin/ruby_executable_hooks:24:in `<main>'
    3: from /home/globewalldesk/.rvm/gems/ruby-2.6.0/bin/ruby_executable_hooks:24:in `eval'
    2: from /home/globewalldesk/.rvm/gems/ruby-2.6.0/bin/rails:23:in `<main>'
    1: from /usr/share/rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0/bundler/rubygems_integration.rb:482:in `block in replace_bin_path'
/usr/share/rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0/bundler/rubygems_integration.rb:462:in `block in replace_bin_path': can't find executable rails for gem railties. railties is not currently included in the bundle, perhaps you meant to add it to your Gemfile? (Gem::Exception)

を実行しようとすると gem install rails , こんな風になります。

Successfully installed concurrent-ruby-1.1.4

HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.

Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.

For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0

Successfully installed i18n-1.5.2
Successfully installed thread_safe-0.3.6
Successfully installed tzinfo-1.2.5
Successfully installed activesupport-5.2.2
Successfully installed rack-2.0.6
Successfully installed rack-test-1.1.0
Successfully installed mini_portile2-2.4.0
Building native extensions. This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

    current directory: /home/globewalldesk/.rvm/gems/ruby-2.6.0/gems/nokogiri-1.10.1/ext/nokogiri
/usr/share/rvm/rubies/ruby-2.6.0/bin/ruby -I /usr/share/rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0 -r ./siteconf20190116-22693-tbjpnz.rb extconf.rb
checking if the C compiler accepts ... yes
Building nokogiri using packaged libraries.
*** 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/share/rvm/rubies/ruby-2.6.0/bin/$(RUBY_BASE_NAME)
    --help
    --clean
    --use-system-libraries
/usr/share/rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0/bundler/rubygems_integration.rb:408:in `block (2 levels) in replace_gem': mini_portile2 is not part of the bundle. Add it to your Gemfile. (Gem::LoadError)
    from extconf.rb:469:in `<main>'

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

  /home/globewalldesk/.rvm/gems/ruby-2.6.0/extensions/x86_64-linux/2.6.0/nokogiri-1.10.1/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/globewalldesk/.rvm/gems/ruby-2.6.0/gems/nokogiri-1.10.1 for inspection.
Results logged to /home/globewalldesk/.rvm/gems/ruby-2.6.0/extensions/x86_64-linux/2.6.0/nokogiri-1.10.1/gem_make.out

に目を通しました。 インストレーションインストラクション や、ここや他の場所で似たような質問をたくさんして、いろいろと試してみたのですが、何もうまくいかないようです。

を試すと、同様のエラーメッセージが表示されます。 gem install nokogiri .

助けて


UPDATE: mkmf.logファイルはこちらです。

"gcc -o conftest -I/usr/share/rvm/rubies/ruby-2.6.0/include/ruby-2.6.0/x86_64-linux -I/usr/share/rvm/rubies/ruby-2.6.0/include/ruby-2.6.0/ruby/backward -I/usr/share/rvm/rubies/ruby-2.6.0/include/ruby-2.6.0 -I.    -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -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/share/rvm/rubies/ruby-2.6.0/lib -Wl,-rpath,/usr/share/rvm/rubies/ruby-2.6.0/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic     -Wl,-rpath,/usr/share/rvm/rubies/ruby-2.6.0/lib -L/usr/share/rvm/rubies/ruby-2.6.0/lib -lruby  -lm   -lc "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

"gcc -I/usr/share/rvm/rubies/ruby-2.6.0/include/ruby-2.6.0/x86_64-linux -I/usr/share/rvm/rubies/ruby-2.6.0/include/ruby-2.6.0/ruby/backward -I/usr/share/rvm/rubies/ruby-2.6.0/include/ruby-2.6.0 -I.    -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -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    -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main() {return 0;}
/* end */


UPDATE 2: Javierのアドバイスに従って、Nokogiriをインストールするためのドキュメントを見て、コマンドを見つけました。 gem install nokogiri -- --use-system-libraries で、うまくいきました。それから、railsとrailtiesについても同じことをしました。

を実行しようとすると、別のエラーメッセージが表示されるようになりました。 rails new :

Traceback (most recent call last):
    2: from /home/globewalldesk/.rvm/gems/ruby-2.6.0/bin/rails:23:in `<main>'
    1: from /usr/share/rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0/bundler/rubygems_integration.rb:482:in `block in replace_bin_path'
/usr/share/rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0/bundler/rubygems_integration.rb:462:in `block in replace_bin_path': can't find executable rails for gem railties. railties is not currently included in the bundle, perhaps you meant to add it to your Gemfile? (Gem::Exception)
O


UPDATE 3:

Javierの回答を受け入れました。フレッシュインストール(試行)でやっていたので、完全に新しく始めるだけなら問題ないのですが。最終的に何が私のシステムを台無しにしたのか分かりませんが(多分、最初にrvmの行を削除せずに古い.bashrcファイルを別のシステムからコピーしたため?)、すべてのRuby、Rails、他のgems、rvmを完全にアンインストールして、再インストールすると問題が解決するはずです。

を最後に更新します。

Ruby、Rails、特にRVMを完全にアンインストールするには、かなりの時間を要した。Bashのプロファイルスクリプトがいかに重要か、そこからRVMに関する行を徹底的に削除する必要があるか、RVMが設定するある環境変数の状態がいかに重要であるか、などなど、気がつかなかった。 Railsのインストールに問題があったのは、単にRVMの設定を古いbashプロファイルからコピーしていたのが主な原因だと思う。削除すべきでした。

今はすべて期待通りに動いています。

解決方法は?

nokogiriをインストールするためのドキュメントはこちらです。 https://nokogiri.org/tutorials/installing_nokogiri.html rvmの注意書きがあります。

<ブロッククオート

RVMユーザーへの注意事項:libgmpが必要な場合は、sudoを実行してください。 apt-get install libgmp-dev.

rvmでrubyを削除する https://rvm.io/rubies/removing

rvm remove 2.6.0

インストール

ルビー

rvm install 2.6.0

Rails

gem install rails

既存のプロジェクトの場合

bundle install