92667


windows(powershell)を使用してrails開発環境を作りたいのですが、powershellでのbundle
installで以下のようなエラーが出ます。  
主にmysqlとmecabの部分でつまります。

どうエラーを解消すればいいでしょうか？

[code]

    bundle install
    Your Gemfile lists the gem listen (>= 0) more than once.
    You should probably keep only one of them.
    Remove any duplicate entries and specify the gem only once.
    While it's not a problem now, it could cause errors if you change the version of one of them later.
    Fetching gem metadata from https://rubygems.org/..........
    Using rake 13.0.6
    Using racc 1.6.0
    Using concurrent-ruby 1.1.10
    Using minitest 5.15.0
    Using zeitwerk 2.5.4
    Using builder 3.2.4
    Using erubi 1.10.0
    Using crass 1.0.6
    Using rack 2.2.3.1
    Using bundler 2.3.14
    Using marcel 1.0.2
    Using mini_mime 1.1.2
    Using net-ssh 6.1.0
    Using websocket-extensions 0.1.5
    Using digest 3.1.0
    Using choice 0.2.0
    Using chronic 0.10.2
    Using coderay 1.1.3
    Using diff-lcs 1.5.0
    Fetching nio4r 2.5.8
    Fetching rgeo 2.4.0
    Fetching msgpack 1.5.2
    Using kaminari-core 1.2.2
    Using rb-fsevent 0.11.1
    Using method_source 1.0.0
    Fetching ffi 1.15.5 (x64-mingw-ucrt)
    Using timeout 0.3.0
    Fetching mecab 0.996
    Using news-api 0.2.0
    Using parallel 1.22.1
    Using thor 1.2.1
    Using rexml 3.2.5
    Using rspec-support 3.11.1
    Using tilt 2.0.10
    Using semantic_range 3.0.0
    Using spring 4.0.0
    Using turbolinks-source 5.2.0
    Using i18n 1.10.0
    Using tzinfo 2.0.4
    Using rack-test 1.1.0
    Fetching nokogiri 1.13.6 (x64-mingw-ucrt)
    Fetching websocket-driver 0.7.5
    Fetching mysql2 0.5.4
    Installing websocket-driver 0.7.5 with native extensions
    Installing mecab 0.996 with native extensions
    Installing mysql2 0.5.4 with native extensions
    Installing msgpack 1.5.2 with native extensions
    Installing rgeo 2.4.0 with native extensions
    Installing nio4r 2.5.8 with native extensions
    Installing ffi 1.15.5 (x64-mingw-ucrt)
    Installing nokogiri 1.13.6 (x64-mingw-ucrt)
    Using mail 2.7.1
    Using net-scp 3.0.0
    Using rack-proxy 0.7.2
    Using sprockets 4.0.3
    Using whenever 1.0.0
    Using pry 0.14.1
    Using net-protocol 0.1.3
    Using ruby-graphviz 1.2.5
    Using rspec-core 3.11.0
    Using rspec-expectations 3.11.1
    Using rspec-mocks 3.11.1
    Using turbolinks 5.2.1
    Using activesupport 6.1.6
    Using sshkit 1.21.2
    Using pry-rails 0.3.9
    Using net-smtp 0.3.1
    Using globalid 1.0.0
    Using activemodel 6.1.6
    Using airbrussh 1.4.0
    Using activejob 6.1.6
    Using activerecord 6.1.6
    Using activerecord-import 1.4.0
    Using annotate 3.2.0
    Using capistrano 3.17.0
    Using kaminari-activerecord 1.2.2
    Using rails-erd 1.7.2
    Using capistrano-bundler 2.1.0
    Using capistrano-rbenv 2.2.0
    Using rb-inotify 0.10.1
    Using natto 1.2.0
    Fetching sassc 2.4.0
    Using listen 3.7.1
    Installing sassc 2.4.0 with native extensions
    Fetching puma 5.6.4
    Installing puma 5.6.4 with native extensions
    Using rails-dom-testing 2.0.3
    Using loofah 2.18.0
    Using rails-html-sanitizer 1.4.2
    Using actionview 6.1.6
    Using actionpack 6.1.6
    Using jbuilder 2.11.5
    Using kaminari-actionview 1.2.2
    Using activestorage 6.1.6
    Using actionmailer 6.1.6
    Using kaminari 1.2.2
    Using railties 6.1.6
    Using sprockets-rails 3.4.2
    Using actionmailbox 6.1.6
    Using actiontext 6.1.6
    Using rspec-rails 6.0.1
    Using webpacker 5.4.3
    Using actioncable 6.1.6
    Using rails 6.1.6
    Using armg 0.10.0
    Fetching bootsnap 1.12.0
    Installing bootsnap 1.12.0 with native extensions
    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    
    current directory:
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/gems/mecab-0.996/ext/mecab
    C:/Ruby31-x64/bin/ruby.exe -I C:/Ruby31-x64/lib/ruby/3.1.0 -r
    ./siteconf20221209-19256-qecrx3.rb extconf.rb
    checking for make... yes
    *** 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=C:/Ruby31-x64/bin/$(RUBY_BASE_NAME)
            --with-mecab-config
            --without-mecab-config
            --enable-mecab-config
            --disable-mecab-config
    extconf.rb:12:in ``': No such file or directory - mecab-config --libs-only-L
    (Errno::ENOENT)
            from extconf.rb:12:in `<main>'
    
    To see why this extension failed to compile, please check the mkmf.log which can
    be found here:
    
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/extensions/x64-mingw-ucrt/3.1.0/mecab-0.996/mkmf.log
    
    extconf failed, exit code 1
    
    Gem files will remain installed in
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/gems/mecab-0.996 for inspection.
    Results logged to
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/extensions/x64-mingw-ucrt/3.1.0/mecab-0.996/gem_make.out
    
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:95:in `run'
    C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:47:in `block in
    build'
      C:/Ruby31-x64/lib/ruby/3.1.0/tempfile.rb:317:in `open'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:26:in `build'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:161:in `build_extension'
    C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:195:in `block in
    build_extensions'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `each'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `build_extensions'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/installer.rb:853:in `build_extensions'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/rubygems_gem_installer.rb:71:in
    `build_extensions'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/rubygems_gem_installer.rb:28:in
    `install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/source/rubygems.rb:204:in
    `install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/gem_installer.rb:54:in
    `install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/gem_installer.rb:16:in
    `install_from_spec'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/parallel_installer.rb:186:in
    `do_install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/parallel_installer.rb:177:in
    `block in worker_pool'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:62:in
    `apply_func'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:57:in
    `block in process_queue'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:54:in
    `loop'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:54:in
    `process_queue'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:91:in
    `block (2 levels) in create_threads'
    
    An error occurred while installing mecab (0.996), and Bundler cannot continue.
    
    In Gemfile:
      mecab
    
    
    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    
    current directory:
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/gems/mysql2-0.5.4/ext/mysql2
    C:/Ruby31-x64/bin/ruby.exe -I C:/Ruby31-x64/lib/ruby/3.1.0 -r
    ./siteconf20221209-19256-tbts3i.rb extconf.rb --with-opt-dir\=
    checking for rb_absint_size()... yes
    checking for rb_absint_singlebit_p()... yes
    checking for rb_wait_for_single_fd()... yes
    checking for rb_enc_interned_str() in ruby.h... yes
    *** 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
            --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=C:/Ruby31-x64/bin/$(RUBY_BASE_NAME)
            --with-mysql-dir
            --without-mysql-dir
            --with-mysql-include
            --without-mysql-include=${mysql-dir}/include
            --with-mysql-lib
            --without-mysql-lib=${mysql-dir}/lib
            --with-mysql-config
            --without-mysql-config
            --with-mysqlclient-dir
            --without-mysqlclient-dir
            --with-mysqlclient-include
            --without-mysqlclient-include=${mysqlclient-dir}/include
            --with-mysqlclient-lib
            --without-mysqlclient-lib=${mysqlclient-dir}/lib
            --with-mysqlclientlib
            --without-mysqlclientlib
    C:/Ruby31-x64/lib/ruby/3.1.0/mkmf.rb:1086:in `block in find_library': undefined
    method `split' for nil:NilClass (NoMethodError)
    
        paths = paths.flat_map {|path| path.split(File::PATH_SEPARATOR)}
                                           ^^^^^^
            from C:/Ruby31-x64/lib/ruby/3.1.0/mkmf.rb:1086:in `each'
            from C:/Ruby31-x64/lib/ruby/3.1.0/mkmf.rb:1086:in `flat_map'
            from C:/Ruby31-x64/lib/ruby/3.1.0/mkmf.rb:1086:in `find_library'
            from extconf.rb:103:in `<main>'
    
    To see why this extension failed to compile, please check the mkmf.log which can
    be found here:
    
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/extensions/x64-mingw-ucrt/3.1.0/mysql2-0.5.4/mkmf.log
    
    extconf failed, exit code 1
    
    Gem files will remain installed in
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/gems/mysql2-0.5.4 for inspection.
    Results logged to
    C:/soft/aisin/vendor/bundle/ruby/3.1.0/extensions/x64-mingw-ucrt/3.1.0/mysql2-0.5.4/gem_make.out
    
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:95:in `run'
    C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:47:in `block in
    build'
      C:/Ruby31-x64/lib/ruby/3.1.0/tempfile.rb:317:in `open'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:26:in `build'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:161:in `build_extension'
    C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:195:in `block in
    build_extensions'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `each'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `build_extensions'
      C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/installer.rb:853:in `build_extensions'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/rubygems_gem_installer.rb:71:in
    `build_extensions'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/rubygems_gem_installer.rb:28:in
    `install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/source/rubygems.rb:204:in
    `install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/gem_installer.rb:54:in
    `install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/gem_installer.rb:16:in
    `install_from_spec'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/parallel_installer.rb:186:in
    `do_install'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/installer/parallel_installer.rb:177:in
    `block in worker_pool'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:62:in
    `apply_func'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:57:in
    `block in process_queue'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:54:in
    `loop'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:54:in
    `process_queue'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.14/lib/bundler/worker.rb:91:in
    `block (2 levels) in create_threads'
    
    An error occurred while installing mysql2 (0.5.4), and Bundler cannot continue.
    
    In Gemfile:
      mysql2
    
[/code]


CC BY-SA 4.0
2022-12-09T07:14:13.327
92665
2022-12-09T09:10:15.983
36855
question
ruby-on-rails
windows(powershell)を使用してrails開発環境を作りたいのですがエラーがでます


RubyInstallerのRubyで他のライブラリに依存するgemパッケージを使用する場合、DevKit環境にそのライブラリが必要です。パッケージによっては自動インストールして、自動的にライブラリを見つけてくれますが、うまくいかない場合は手動で対応が必要になります。今回がそのパターンです。

それぞれについてgemのインストール方法を書きます。各パスはRubyInstaller Ruby 3.1系
x64版をDevKit付きでデフォルトの場所にインストールしているとします。MSYS2を独立してインストールしたなどの場合はパスを読み直して下さい。

  * Ruby: RubyInstaller Ruby 3.1系 x64版
  * Rubyの場所パス: C:\Ruby31-x64
  * DevKit(MSYS2)の場所: C:\Ruby31-x64\msys64

## mecab gemパッケージ インストール

mecab
gemパッケージはmecabのライブラリ(mingw-w64-ucrt-x86_64-mecab)を自動でインストールしてくれないため、あらかじめmeceabのライブラリをインストールしておく必要があります。実際に使うには辞書データ(mingw-w64-ucrt-x86_64-mecab-
naist-jdic)も必要なので、一緒にインストールしておきます。

[code]

    ridk enable
    pacman -S mingw-w64-ucrt-x86_64-mecab mingw-w64-ucrt-x86_64-mecab-naist-jdic
    
[/code]

mecab gemは`mecab-
config`コマンドを実行してmecabライブラリの場所を探すのですが、Windows環境だとこれがうまく動きません。下記の名前と内容のラップするbatを作る必要があります。(仕組みとしてはC:\Ruby31-x64\bin\gem.bat等と同じです。)

C:\Ruby31-x64\msys64\ucrt64\bin\mecab-config.bat

[code]

    @ECHO OFF
    @"%~dp0\..\..\usr\bin\sh.exe" "%~dpn0" %*
    
[/code]

あとはそのままインストールできます。

[code]

    gem install mecab
    
[/code]

## mysql2 gemパッケージ インストール

mysql2
gemパッケージは自動的にmaridbのCクライアントライブラリ(mingw-w64-ucrt-x86_64-libmariadbclient)をインストールしてくれます。手動で何かのライブラリやパッケージを入れる必要はありません。

以前のバージョンのRubyであれば何もしなくても自動で探してくれたのですが、3.1ではこの自動的に入ったライブラリを見つけられなくなったようです。ですので、単に手動で指定すれば、インストールできます。

[code]

    gem install mysql2 -- --with-mysql-dir=C:/Ruby31-x64/msys64/ucrt64
    
[/code]

ucrt64の場所はDevKit(MSYS2)がインストールされている場所によって異なるため、注意して下さい。`--`以下がgemインストール時のビルド(コンパイル)に関するオプション(native
extensions)になります。

`bundle install`で入れたい場合は、次のようにすると、ビルドオプションが設定されます。

[code]

    bundle config build.mysql2 --with-mysql-dir=C:/Ruby31-x64/msys64/ucrt64
    
[/code]

* * *

最後に、Zlibが必要とか、OpenSSLが手動で必要とか、DLLをコピーする必要があるとか、色んな情報がありますが、これらはOSやバージョンによって必要だったり、必要で無かったりするものです。これらを参考にする前に、OSやバージョンを必ず確認するようにしてください。


CC BY-SA 4.0
2022-12-09T09:10:15.983
92667
2022-12-09T09:10:15.983
7347
92665
answer