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

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

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

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

Q&A

1回答

3423閲覧

bundle install、update時のエラー対応について

Sayre

総合スコア23

Ruby on Rails

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

0グッド

0クリップ

投稿2022/04/19 09:27

編集2022/04/20 01:48

前提

bundle install時にエラーが発生しました。
使用しているRubyのバージョン 2.4.1p111を使用しています。
Rubyのバージョンがかなり古いかと思いますが、諸事情でバージョンはあまり変えたくありません。
Gemfileは以下になります。文字数制限の関係上、エラーが出てバージョン変更した部分周辺の抜粋になります。

Gemfile

1# frozen_string_literal: true 2 3source 'https://rubygems.org' 4 5#gem 'rails', '~> 6.1.4.6' 6gem 'rails', '~> 4.2', '>= 4.2.11.1' 7 8gem 'bootsnap', '~> 1.9.1', require: false 9 10# OS detection for usage ping 11#gem 'ohai', '~> 16.10' 12gem 'ohai', '~> 14.15' 13 14# Markdown and HTML processing 15gem 'html-pipeline', '~> 2.13.2' 16gem 'deckar01-task_list', '2.3.1' 17gem 'gitlab-markup', '~> 1.8.0' 18gem 'github-markup', '~> 1.7.0', require: 'github/markup' 19gem 'commonmarker', '~> 0.23.4' 20gem 'kramdown', '~> 2.3.1' 21gem 'RedCloth', '~> 4.3.2' 22gem 'rdoc', '~> 6.3.2' 23gem 'org-ruby', '~> 0.9.12' 24gem 'creole', '~> 0.5.0' 25gem 'wikicloth', '0.8.1' 26gem 'asciidoctor', '~> 2.0.10' 27gem 'asciidoctor-include-ext', '~> 0.3.1', require: false 28gem 'asciidoctor-plantuml', '~> 0.0.12' 29gem 'asciidoctor-kroki', '~> 0.5.0', require: false 30gem 'rouge', '~> 3.27.0' 31gem 'truncato', '~> 0.7.11' 32gem 'bootstrap_form', '~> 4.2.0' 33#gem 'nokogiri', '~> 1.12' 34gem 'nokogiri', '~> 1.10', '>= 1.10.10' 35gem 'escape_utils', '~> 1.1' 36 37# Background jobs 38#gem 'sidekiq', '~> 6.4' 39gem 'sidekiq', '~> 5.2', '>= 5.2.10' 40gem 'sidekiq-cron', '~> 1.2' 41gem 'redis-namespace', '~> 1.8.1' 42gem 'gitlab-sidekiq-fetcher', '0.8.0', require: 'sidekiq-reliable-fetch' 43 44# Metrics 45gem 'method_source', '~> 1.0', require: false 46gem 'webrick', '~> 1.6.1', require: false 47#gem 'webrick', '~> 1.7', require: false 48gem 'prometheus-client-mmap', '~> 0.15.0', require: 'prometheus/client' 49 50gem 'warning', '~> 1.2.0' 51 52group :test do 53 gem 'fuubar', '~> 2.2.0' 54 gem 'rspec-retry', '~> 0.6.1' 55 gem 'rspec_profiling', '~> 0.0.6' 56 gem 'rspec-benchmark', '~> 0.6.0' 57 gem 'rspec-parameterized', require: false 58 59# gem 'capybara', '~> 3.35.3' 60 gem 'capybara', '~> 3.32', '>= 3.32.2' 61 gem 'capybara-screenshot', '~> 1.0.22' 62 gem 'selenium-webdriver', '~> 3.142' 63 64 gem 'shoulda-matchers', '~> 4.0.1', require: false 65 gem 'email_spec', '~> 2.2.0' 66 gem 'webmock', '~> 3.9.1' 67 gem 'rails-controller-testing' 68 gem 'concurrent-ruby', '~> 1.1' 69 gem 'test-prof', '~> 1.0.7' 70 gem 'rspec_junit_formatter' 71 gem 'guard-rspec'

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

bundle install時に以下エラーが発生。

bundle install Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this machine. Fetching source index from https://rubygems.org/ Resolving dependencies......................................................................................................................................................................................... Bundler found conflicting requirements for the Ruby version: In Gemfile: rails (~> 6.1.4.6) was resolved to 6.1.4.6, which depends on Ruby (>= 2.5.0) bootsnap (~> 1.9.1) was resolved to 1.9.1, which depends on Ruby (>= 2.3.0) responders (~> 3.0) was resolved to 3.0.0, which depends on Ruby (>= 2.4.0) sprockets (~> 3.7.0) was resolved to 3.7.2, which depends on Ruby (>= 1.9.3) pg (~> 1.1) was resolved to 1.2.3, which depends on Ruby (>= 2.2) devise (~> 4.7.2) was resolved to 4.7.3, which depends on Ruby (>= 2.1.0) ruby-saml (~> 1.13.0) was resolved to 1.13.0, which depends on Ruby (>= 1.8.7) attr_encrypted (~> 3.1.0) was resolved to 3.1.0, which depends on Ruby (>= 2.0.0) ohai (~> 16.10) was resolved to 16.10.6, which depends on Ruby (>= 2.6) commonmarker (~> 0.23.4) was resolved to 0.23.4, which depends on Ruby (>= 2.6, < 4.0) bootstrap_form (~> 4.2.0) was resolved to 4.2.0, which depends on Ruby (>= 2.2.2) icalendar was resolved to 2.4.1, which depends on Ruby (>= 1.9.2) asana (~> 0.10.3) was resolved to 0.10.3, which depends on Ruby (> 2.0) licensee (~> 9.14.1) was resolved to 9.14.1, which depends on Ruby (> 2.3) tanuki_emoji (~> 0.6) was resolved to 0.6.0, which depends on Ruby (>= 2.7.0) ruby_parser (~> 3.15) was resolved to 3.15.0, which depends on Ruby (>= 2.1, < 3.1) thin (~> 1.8.0) was resolved to 1.8.0, which depends on Ruby (>= 1.8.5) pry-rails (~> 0.3.9) was resolved to 0.3.9, which depends on Ruby (>= 1.9.1) gitlab-license_finder (~> 6.0) was resolved to 6.14.2.1, which depends on Ruby (>= 2.3.3) asana (~> 0.10.3) was resolved to 0.10.3, which depends on oauth2 (~> 1.4) was resolved to 1.4.7, which depends on Ruby (>= 1.9.0) yajl-ruby (~> 1.4.1) was resolved to 1.4.1, which depends on Ruby (>= 1.8.6) graphql-docs (~> 1.6.0) was resolved to 1.6.0, which depends on gemoji (~> 3.0) was resolved to 3.0.1, which depends on Ruby (> 1.9) org-ruby (~> 0.9.12) was resolved to 0.9.12, which depends on rubypants (~> 0.2) was resolved to 0.2.0, which depends on Ruby (> 0.0.0) solargraph (~> 0.43) was resolved to 0.43.0, which depends on diff-lcs (~> 1.4) was resolved to 1.4.4, which depends on Ruby (>= 1.8) Ruby

コンフリクトを起こした際に、bundle updateすれば解決するかもしれない、
Gemfile.lockを削除してbundle installすれば解決するかもしれないという記事を読んだので、
Gemfile.lockを削除後、bundle updateを実施しました。
実施後、以下のようにエラーが変わりました。

Bundler found conflicting requirements for the Ruby version: In Gemfile: Ruby aws-sdk-core (~> 3) was resolved to 3.130.1, which depends on Ruby (>= 2.3) gitlab-license_finder (~> 6.0) was resolved to 6.14.2.1, which depends on Ruby (>= 2.3.3) gitlab-net-dns (~> 0.9.1) was resolved to 0.9.1, which depends on Ruby (>= 2.1) grpc (~> 1.42.0) was resolved to 1.42.0, which depends on Ruby (< 3.1.dev, >= 2.4) nokogiri (~> 1.12) was resolved to 1.12.5, which depends on Ruby (>= 2.5.0)

試したこと

Rubyのバージョン 2.4.1p111 を使用しており、nokogiriの期待するrubyのバージョンと合わないためエラーが出ているのだと判断。
以下サイトを参考に必要Rubyバージョンが2.4.1以下のものを探して、Gemfileを修正後再度install updateを実施。
参考URL: https://rubygems.org/
再度install update実施後も同じようなエラーが出て、都度都度Gemfileを修正しています。
またruby2.4.1に合わせるためにライブラリのバージョンを下げてるせいか、
そのバージョンを下げたライブラリに依存するライブラリに関してもエラーが出てきて、
どんどんエラーが増えていっている状態です。

まず、このエラー対応は正しいのでしょうか。ruby初学者かつこのようなエラー対応は初めてなので、
このままこの対応をしていて問題ないのかと不安になり質問致しました。
分かる方いればぜひ教えていただければ幸いです。

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

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

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

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

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

mingos

2022/04/19 10:19

rubyのバージョンが古すぎるので、Gemfileは各gemのバージョンを細かく指定しないといけない気がします。 いずれにしても、Gemfile全体を省略せずに質問に記載したほうが回答が付きやすいと思います。 現段階の情報だけだとなんとも答えられません。
Sayre

2022/04/20 01:51

ご指摘ありがとうございます。 Gemfileは文字数制限の関係上全体を表示できず、エラーが出た部分周辺のみの抜粋となってしまっています。
guest

回答1

0

かなり大変ですが、1つずつ検証していくしかないと思います。
解決まではちょっと付き合えないのですが、
自分がやるとしたらこうやるかなというのを書きたいと思います。

検証環境は以下です。

  • Rocky Linux 8.5 (CentOS8互換のLinuxです。Linuxなら何でも大丈夫かと思いますが)
  • ruby 2.4.1p111
  • bundler 1.17.3

まずはbundle installが成功するかどうかだけわかればいいので、
いったんRailsプロジェクトとは別のディレクトリで検証していきます。

なお、rails4.2の場合、

rails (>= 4.2.11.1, ~> 4.2) was resolved to 4.2.11.3, which depends on bundler (< 2.0, >= 1.3.0)

と言われるため、2.0未満で出来るだけ新しいbundlerを使う必要があります。
gem search -a ^bundler$で調べると1.17.3が該当するのでそれをグローバルに入れます。

bash

1$ gem install bundler -v 1.17.3 2$ bundler -v 3Bundler version 1.17.3 4

検証用のディレクトリを作ってGemfileだけ作ります。

$ mkdir test $ cd test $ touch Gemfile
  • Gemfile
source "https://rubygems.org" gem 'rails', '~> 4.2', '>= 4.2.11.1' gem 'bundler', '1.17.3'

bundle installを実行

$ bundle install --path vendor/bundle

ここでは成功するはずです。
cat Gemfile.lock などを見るといろいろインストールされているはずです。

lsで見たほうが分かりやすいです。
ls -l vendor/bundle/ruby/2.4.0/gems/

ここでインストールされているバージョンをGemfileで指定するといいと思います。
自分の環境では、sprockets-3.7.2、nokogiri-1.10.10がインストールされていました。

gem 'sprockets', '3.7.2' gem 'nokogiri', '1.10.10'

と書いてもいいのですが、これを逐一やってると終わらないので、検証段階では面倒なのでスルーしておきます。

ここまででまずはRailsと関連する基本のgemについては解決です。

ここからは大変ですが、1つずつやっていきます。
例えば、ohaiですね。

とりあえずはバージョンをつけずにGemfileに書いてbundle installです。
何かエラーが出たらそれに従いましょう。

  • Gemfile

Gemfile

1# frozen_string_literal: true 2 3source "https://rubygems.org" 4 5gem 'rails', '~> 4.2', '>= 4.2.11.1' 6 7gem 'bundler', '1.17.3' 8gem 'ohai'
$ bundle install

自分の環境では成功しています。
この調子で1つずつGemfileに書いていきます。

最後まで成功したらGemfileとGemfile.lockを本来のRailsプロジェクトへコピーして、
そこでbundle installを行えば良いはずです。

投稿2022/04/20 02:27

編集2022/04/20 02:39
mingos

総合スコア4025

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

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

Sayre

2022/04/21 01:56

エラー対応の指針の提示ありがとうございます。 検証すべきライブラリがかなり多いため、全部実施できるか分かりませんが、 参考にさせていただきます。 また、rubyのバージョンはあまり変えたくなかったのですが、バージョンを上げて対応するのも 考えようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問