[解決済み] Ubuntu 18.04で「extconf.rbが失敗した」ため「railsのインストールに失敗した」。
質問
Railsのインストールに失敗しています。
背景 私の(新品の)システム=Ubuntu 18.04、Ruby 2.6.0、最新のrvmとbundlerをインストールし更新しています。Rubyをインストールした後、最初にやったことは
sudo apt install ruby-railties
と
sudo 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
関連
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] heroku open - no app specified
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".
-
[解決済み] ruby installation is missing psych" エラーの解決方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] Heroku: 既存のrailsアプリにseeds.rbをプッシュする方法?
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]
-
[解決済み] 未初期化の定数 "コントローラ名"