[RUBY] Copier le référentiel et obtenir une erreur mysql2 lors de la première installation du bundle

environnement

Ruby 2.5.7 Rails 5.2.4

Contexte

Ceci est mon article de mémo, mais je n'ai pas trouvé d'article expliquant cette erreur. J'espère que cela sera utile à n'importe qui.

À des fins d'apprentissage, j'ai essayé de changer le moteur de modèle de l'application Rails que je crée actuellement de erb à slim. Cela allait être une rénovation lourde, alors gardez l'application existante, faites une copie et affinez-la.

Qiita --Pousser le référentiel cloné à distance en tant que référentiel séparé

La copie du référentiel et de l'application GitHub était terminée, et lorsque j'ai essayé l'installation du bundle dans le répertoire de l'application copié pour slim, l'erreur suivante s'est produite. (À ce stade, l'application source de copie n'a pas d'erreur.)

$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/.........

...
Utilisation de la liste des gemmes
...

Fetching mysql2 0.5.3
Installing mysql2 0.5.3 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/vagrant/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3/ext/mysql2
/home/vagrant/.rbenv/versions/2.5.7/bin/ruby -r ./siteconf20200915-19570-14xz74g.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
checking for -lmysqlclient... no
-----
mysql client is missing. You may need to 'sudo apt-get install libmariadb-dev', 'sudo apt-get install libmysqlclient-dev' or 'sudo yum install mysql-devel', and try again.
-----
*** 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=/home/vagrant/.rbenv/versions/2.5.7/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-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysqlclientlib
        --without-mysqlclientlib

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

  /home/vagrant/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/mysql2-0.5.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/vagrant/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3 for inspection.
Results logged to /home/vagrant/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/mysql2-0.5.3/gem_make.out

An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

Solution

mysql client is missing. You may need to 'sudo apt-get install libmariadb-dev', 'sudo apt-get install libmysqlclient-dev' or 'sudo yum install mysql-devel', and try again.

On me demande d'essayer cette phrase d'erreur et 3 modèles de commandes, je vais donc les essayer dans l'ordre.

$ sudo apt-get install libmariadb-dev
sudo: apt-get: command not found

On m'a dit que la commande apt-get était introuvable, alors sautez le deuxième 'sudo apt-get install libmysqlclient-dev' et essayez le troisième'sudo yum install mysql-devel' ..

$ sudo yum install mysql-devel
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                                                                                                                                   | 3.6 kB  00:00:00
extras                                                                                                                                                                 | 2.9 kB  00:00:00
nodesource                                                                                                                                                             | 2.5 kB  00:00:00
updates                                                                                                                                                                | 2.9 kB  00:00:00
(1/3): extras/7/x86_64/primary_db                                                                                                                                      | 206 kB  00:00:00
(2/3): updates/7/x86_64/primary_db                                                                                                                                     | 4.5 MB  00:00:00
(3/3): nodesource/x86_64/primary_db                                                                                                                                    |  43 kB  00:00:01
Resolving Dependencies
--> Running transaction check
---> Package mariadb-devel.x86_64 1:5.5.65-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================
 Package                                          Arch                                      Version                                             Repository                               Size
==============================================================================================================================================================================================
Installing:
 mariadb-devel                                    x86_64                                    1:5.5.65-1.el7                                      base                                    756 k

Transaction Summary
==============================================================================================================================================================================================
Install  1 Package

Total download size: 756 k
Installed size: 3.3 M
Is this ok [y/d/N]: y
Downloading packages:
mariadb-devel-5.5.65-1.el7.x86_64.rpm                                                                                                                                  | 756 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:mariadb-devel-5.5.65-1.el7.x86_64                                                                                                                                        1/1
  Verifying  : 1:mariadb-devel-5.5.65-1.el7.x86_64                                                                                                                                        1/1

Installed:
  mariadb-devel.x86_64 1:5.5.65-1.el7

Complete!

Il vous sera demandé si vous souhaitez télécharger le package en cours de route, alors entrez y et appuyez sur Entrée.

Le mysql-devel entré dans la commande est le système de gestion de paquet requis pour exécuter mysql sur le serveur, et cette fois le mariadb-devel manquant est téléchargé.

Téléchargement terminé normalement, à nouveau

$bundle install

Lorsque vous le faites, il se termine normalement.

Résumé

Je pouvais comprendre le système de gestion des paquets, mais je ne pouvais pas comprendre comment mariadb-devel était impliqué dans cette erreur, alors j'apprécierais que vous me le fassiez savoir dans les commentaires.

De plus, si vous avez des questions, des différences d'interprétation ou si vous pensez que quelque chose ne va pas avec la méthode de description, nous vous serions reconnaissants de bien vouloir le signaler dans les commentaires.

Merci d'avoir lu jusqu'au bout.

Site de référence

Qiita --Pousser le référentiel cloné à distance en tant que référentiel séparé Hatena Blog-Install MySQL sur CentOS

Recommended Posts

Copier le référentiel et obtenir une erreur mysql2 lors de la première installation du bundle
Que faire si mysql2 obtient une erreur d'installation de bundle
Installez le plugin memcached sur MySQL et accédez à partir de Java
erreur d'installation du bundle
À propos de l'erreur causée par l'installation du bundle ~ puma Gem ~
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Erreur lors de l'installation du bundle
Je ne peux pas grouper l'installation après avoir changé la version de Ruby
l'installation du bundle a échoué (suite). Le cas causé par le gem "MySQL2".
[Rails] Quelle est la différence entre l'installation et la mise à jour du bundle?
L'installation du bundle [Ruby on Rails] échoue "Une erreur s'est produite lors de l'installation de pg (1.2.3) et le bundle ne peut pas continuer."
l'installation du bundle n'installe pas mysql2
Différence entre l'installation de bundle et de bundle
Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
Je ne vois pas d'erreur dans l'installation du bundle Rails ... la solution
Vérifiez le paramètre BUNDLE_PATH lorsque la commande d'installation du bundle sur le conteneur Docker se termine avec le code: 15