web-dev-qa-db-de.com

Fehler beim Installieren von mysql2 gem über den Bundler

Ich versuche, den mysql2 gem über den Bundler zu installieren, er stirbt jedoch mit dem folgenden Fehler:

** executing command
/home/cc_Rails/.rvm/rubies/Ruby-1.9.2-p0/lib/Ruby/1.9.1/rubygems/installer.rb:483:in 'rescue in block in build_extensions': 
ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/home/cc_Rails/.rvm/rubies/Ruby-1.9.2-p0/bin/Ruby extconf.rb --with-mysql-config=/usr/bin/mysql_config
checking for rb_thread_blocking_region()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no

-----
mysql.h is missing.  please check your installation of mysql 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/cc_Rails/.rvm/rubies/Ruby-1.9.2-p0/bin/Ruby
--with-mysql-config
Gem files will remain installed for inspection.

Die meisten Dinge, die ich über Googling gefunden habe, empfahlen, den Parameter --with-mysql-config zu übergeben, um dies zu beheben. Also basierend auf:

$ which mysql_config
/usr/bin/mysql_config

Ich habe der Bundler-Konfiguration Folgendes hinzugefügt:

$ bundle config build.mysql2 --with-mysql-config='/usr/bin/mysql_config'

Immer noch kein Glück - derselbe Crash wie oben.

Da es mit dem Fehler mysql.h is missing im Sterben liegt, habe ich darauf geantwortet, und es ist angeblich in der Nähe.

$ find / -name mysql.h
/usr/include/mysql5/mysql/mysql.h

Irgendwelche Gedanken?

60
T.J. Schuck

Die Antwort war ähnlich wie die, die Wrikken gepostet hatte - hier habe ich es für zukünftige Leser getan, um es zu reparieren.

(Dies ist für RHEL 5.5 - ähnliche Befehle gelten jedoch für Ubuntu/Debian/etc.)

Durch Sudo yum list installed werden alle auf Ihrem Computer installierten Pakete ausgedruckt (Hinweis: yum bei RHEL erfordert, dass Sie ein Red Hat Network-Repository hinzufügen [Ich verwende EPEL ] und führe es über Sudo aus.

Ich hatte mysql und mysql-server, was erklärt, warum MySQL für jede bereits vorhandene App gut funktioniert hat, aber kein mysql-devel, was erforderlich ist, um den mysql.h is missing-Fehler und ähnliche andere Build-Fehler zu beheben.

Lange Geschichte kurz, nach einem mysqldump -u root -ppassword --all-databases > full-dump.sql zur Sicherheit wurde es mit einem einfachen behoben

Sudo yum install mysql-devel
95
T.J. Schuck

Für Ubuntu muss folgendes installiert werden: . Libmysqlclient-dev Libmysqlclient16 

33
Indika K

Für Mac mit einer Brew-Installation von Mysql hat die folgende Lösung das Problem für mich behoben:

Ich habe die Datei mysql_config in /usr/local/Cellar/mysql/5.6.12/bin bearbeitet und die W-Compiler-Optionen -Wno-null-conversion und das -Wno-unused-private-Feld für cflags und cxxflags entfernt.

Das Problem mit "gem install mysql2" wurde behoben.

Referenz: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

20
guido

Das obige Problem tritt auf, weil das Paket mysql-devel nicht ordnungsgemäß in Ihrem System installiert ist. Ich werde das Gleiche in Centos erklären, wie man es repariert. Wenn Sie versuchen, dieses Paket mit zu installieren,

    yum install mysql-devel

manchmal kommt es zu einem Konflikt mit den vorhandenen Paketen, die installiert werden, wenn Sie das MySql-Administrative-Tool und den MySQL-Abfragebrowser installieren.

In diesem Fall müssen Sie alle vorhandenen mysql2-Pakete deinstallieren und erneut installieren.

    rpm -qa -last | grep -i mysql
    yum remove MySQL-server-5.5.27-1.rhel5
    yum remove MySQL-client-5.5.27-1.rhel5
    yum remove mysql-gui-tools-5.0r12-1rhel4
    yum remove mysql-query-browser-5.0r12-1rhel4-a

Sie können also alle mit rpm -qa angezeigten mysql -Dinge wie oben beschrieben deinstallieren.

Dann können Sie den mysql-server und den mysql-client installieren.

    yum install mysql-server
    yum install mysql-client

Jetzt führen Sie die Installation des Pakets mysql-devel durch.

    yum install mysql-devel

Jetzt gibt es keine Paketkollisionen und Sie können den mysql2 gem installieren.

    gem install mysql2 -v '0.3.11'

Jetzt wird dein mysql2-Gem erfolgreich installiert und du kannst loslegen.

8
maniempire

In meinem Fall war das Problem ein fehlerhaftes Skript mysql_config. Bei Aufruf über die Befehlszeile mit der Option --cflags wird eine Zeichenfolge mit folgenden Optionen zurückgegeben:

-Xclang -target-feature -Xclang -aes -Qunused-Argumente

Aus irgendeinem Grund schlägt der Aufruf von have_header ('mysql.h') im Skript extconf.rb fehl, wenn diese Option enthalten wäre.

Für mich funktionierte es, die Datei mysql_config von Hand zu bearbeiten, indem der Verweis auf diese Optionen aus der Zeile entfernt wurde:

cflags = "- I $ pkgincludedir -Os -w -pipe -march = native -Xclang -target-feature -Xclang -aes -Qunused-Argumente -O2 -g -DDBUG_OFF" #note: Ende Leerzeichen

was ich neu geschrieben habe als:

cflags = "- I $ pkgincludedir -Os -w -pipe -march = native -O2 -g -DDBUG_OFF" #note: Ende Leerzeichen!
1
user2449437

Ich habe den gleichen Fehler bekommen. und für ubuntu 16. Ich musste den folgenden Befehl schreiben:

Sudo apt-get install libmysqlclient-dev 

und es funktioniert zurück.

1

Ich weiß, das ist uralt, aber wenn noch jemand diesen zlib-Fehler erhält, stellen Sie sicher, dass Sie Folgendes eingegeben haben: Rvm use 

(welche Version auch immer Sie verwenden)

Ich hätte schwören können, dass ich das getan habe. Nur posten, falls sich jemand die Haare ausreißt und das hilft. Wenn nicht viel Glück. :)

0
Kevin

Ich habe dieses Problem während der Bundle-Installation für Redmine auf Fedora 23 festgestellt. Die Lösung, die ich fand, war, diesen Befehl auszugeben - Sudo dnf install redhat-rpm-config.

Dies behebte nicht nur mein Problem mit der Installation von mysql2, sondern auch für nokogiri und redcarpet.

0
zillaofthegods

Auf meinem Ubuntu 16.04.4 LTS running mysql Ver 15.1 Distrib 10.0.34-MariaDB, für debian-linux-gnu (x86_64) mit readline 5.2 , funktionierte Folgendes:

Sudo apt-get install libmariadb-client-lgpl-dev

Ich habe gesehen, dass die Fehlermeldung des aktuellen Installationsprogramms die Ausführung vorschlägt

apt-get install libmysqlclient-dev

Das könnte auch funktionieren.

0
Matthias Luh