[RUBY] Kopieren des Repositorys und Abrufen eines mysql2-Fehlers bei der ersten Bundle-Installation

Umgebung

Ruby 2.5.7 Rails 5.2.4

Hintergrund

Dies ist mein Memo-Artikel, aber ich konnte keinen Artikel finden, der diesen Fehler erklärt. Ich hoffe, es wird jedem helfen.

Zu Lernzwecken habe ich versucht, die Template-Engine der Rails-Anwendung, die ich gerade erstelle, von erb auf slim zu ändern. Es würde eine schwere Renovierung sein, also behalten Sie die vorhandene Anwendung, erstellen Sie eine Kopie und verkleinern Sie sie.

Qiita - Schieben Sie das geklonte Repository remote als separates Repository

Die Kopie des GitHub-Repositorys und der Anwendung ist abgeschlossen. Wenn ich die Bundle-Installation im kopierten Slim-App-Verzeichnis versuche, tritt der folgende Fehler auf. (Zu diesem Zeitpunkt weist die Kopierquellenanwendung keinen Fehler auf.)

$ 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/.........

...
Edelsteinliste verwenden
...

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

Lösung

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.

Ich werde gebeten, diesen Fehlersatz und drei Befehlsmuster auszuprobieren, also werde ich sie der Reihe nach versuchen.

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

Mir wurde gesagt, dass der Befehl "apt-get" nicht gefunden werden konnte. Überspringen Sie also den zweiten "sudo apt-get install libmysqlclient-dev" und versuchen Sie den dritten "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!

Sie werden gefragt, ob Sie das Paket unterwegs herunterladen möchten. Geben Sie also "y" ein und drücken Sie die Eingabetaste.

Das im Befehl eingegebene mysql-devel ist das Paketverwaltungssystem, das zum Ausführen von mysql auf dem Server erforderlich ist. Diesmal wird das fehlende mariadb-devel heruntergeladen.

Der Download wurde wieder normal abgeschlossen

$bundle install

Wenn Sie dies tun, wird es normal abgeschlossen.

Zusammenfassung

Ich habe das Paketverwaltungssystem verstanden, aber ich konnte nicht verstehen, wie Mariadb-Devel an diesem Fehler beteiligt war. Ich würde es begrüßen, wenn Sie mich in den Kommentaren darüber informieren könnten.

Wenn Sie Fragen haben, unterschiedliche Interpretationen haben oder wenn Sie der Meinung sind, dass etwas mit der Beschreibungsmethode nicht stimmt, würden wir uns freuen, wenn Sie in den Kommentaren darauf hinweisen könnten.

Vielen Dank für das Lesen bis zum Ende.

Referenzseite

Qiita - Schieben Sie das geklonte Repository remote als separates Repository Hatena Blog - MySQL unter CentOS installieren

Recommended Posts

Kopieren des Repositorys und Abrufen eines mysql2-Fehlers bei der ersten Bundle-Installation
Was tun, wenn mysql2 einen Bundle-Installationsfehler erhält?
Installieren Sie das memcached Plugin unter MySQL und greifen Sie von Java aus zu
Paketinstallationsfehler
Über den Fehler, der durch die Bundle-Installation ~ puma Gem ~ verursacht wurde
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Fehler bei der Bundle-Installation
Ich kann die Installation nach dem Ändern der Ruby-Version nicht bündeln
Bundle-Installation fehlgeschlagen (Fortsetzung). Der Fall, der durch Gem "MySQL2" verursacht wurde.
[Rails] Was ist der Unterschied zwischen Bundle-Installation und Bundle-Update?
[Ruby on Rails] Bundle-Installation schlägt fehl "Bei der Installation von pg (1.2.3) ist ein Fehler aufgetreten, und Bundler kann nicht fortfahren."
Bei der Bundle-Installation wird mysql2 nicht installiert
Unterschied zwischen Bundle und Bundle-Installation
So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu
Installieren Sie Ubuntu20.04 auf RaspberryPi 4 und erstellen Sie Kubernetes, um den Container auszuführen
Ich sehe keinen Fehler bei der Installation des Rails-Bundles ... der Lösung
Überprüfen Sie die Einstellung BUNDLE_PATH, wenn der Befehl zur Bundle-Installation im Docker-Container mit dem folgenden Code beendet wird: 15