Fouten bij het installeren van mysql2 gem via de bundelaar

Ik probeer de mysql2-edelsteen via de Bundler te installeren, maar het blijft sterven met de volgende fout:

** 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.

De meeste dingen die ik via Googlen vond, raadden aan om de parameter --with-mysql-configdoor te geven om het probleem op te lossen. Dus, gebaseerd op:

$ which mysql_config
/usr/bin/mysql_config

Ik heb het volgende toegevoegd aan de configuratie van de Bundler:

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

Maar nog steeds geen geluk — dezelfde crash als hierboven.

Omdat het sterft met de fout mysql.h is missing, heb ik daarop gecontroleerd, en het is naar verluidt in de buurt, maar kan niet worden gevonden door de Bundler.

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

Enige gedachten?


Antwoord 1, autoriteit 100%

Het antwoord was vergelijkbaar met het antwoord dat Wrikken plaatste — dit is wat ik deed om het op te lossen in het belang van toekomstige lezers.

(Dit is voor RHEL 5.5 — vergelijkbare maar andere commando’s zijn van toepassing op Ubuntu/Debian/etc.)

Als u sudo yum list installeduitvoert, worden alle geïnstalleerde pakketten op uw computer afgedrukt (opmerking: yumop RHEL vereist dat u een Red Hat Network-repository toevoegt [Ik gebruik EPEL], en voer het uit via sudo).

Ik had mysqlen mysql-server, wat verklaarde waarom MySQL prima werkte voor elke reeds bestaande app, maar geen mysql-devel, wat nodig is om de fout mysql.h is missingen soortgelijke andere build-fouten op te lossen.

Lang verhaal kort, na een mysqldump -u root -ppassword --all-databases > full-dump.sqlvoor de veiligheid is het opgelost met een simpele

sudo yum install mysql-devel

Antwoord 2, autoriteit 35%

Voor Ubuntu moet het volgende worden geïnstalleerd.
libmysqlclient-dev
libmysqlclient16


Antwoord 3, autoriteit 21%

Voor Mac met een brew-installatie van mysql loste de volgende oplossing het probleem voor mij op:

Ik heb het mysql_config-bestand in /usr/local/Cellar/mysql/5.6.12/bin bewerkt en de W-compileropties -Wno-null-conversion en -Wno-unused-private-field voor cflags en cxxflags verwijderd.

Dit loste het probleem op met “gem install mysql2”.

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


Antwoord 4, autoriteit 9%

Het bovenstaande probleem zal optreden omdat het mysql-devel-pakket niet correct op uw systeem is geïnstalleerd. Ik zal hetzelfde uitleggen in Centos over hoe het te repareren. Wanneer u dat pakket probeert te installeren met,

   yum install mysql-devel

Soms zal er een botsing optreden met de bestaande pakketten die worden geïnstalleerd als u de MySql-Administrative tool en de MySQL-querybrowser installeert.

In dat geval moet u alle bestaande mysql2-pakketten verwijderen en opnieuw installeren.

   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

Dus je kunt alle mysql-dingen die worden weergegeven met rpm -qa verwijderen, zoals hierboven.

Vervolgens kunt u de mysql-server en mysql-client installeren.

   yum install mysql-server
    yum install mysql-client

Nu doe je de installatie van het mysql-devel pakket.

   yum install mysql-devel

Er zijn nu geen pakketbotsingen en u kunt de mysql2-edelsteen installeren.

   gem install mysql2 -v '0.3.11'

Nu is je mysql2 gem met succes geïnstalleerd en ben je klaar om te gaan.


Antwoord 5, autoriteit 3%

Ik kreeg dezelfde fout. en voor ubuntu 16. Ik moest het onderstaande commando schrijven:

sudo apt-get install libmysqlclient-dev 

en het werkt terug.


Antwoord 6

In mijn geval was het probleem een ​​zich misdragend mysql_config-script. Wanneer aangeroepen door de opdrachtregel met de optie –cflags zou het een reeks opties retourneren met daarin:

-Xclang -target-feature -Xclang -aes -Qunused-arguments

Om de een of andere reden zou de aanroep naar have_header(‘mysql.h’) in het extconf.rb-script mislukken als die optie was opgenomen.

Wat voor mij werkte, was om het mysql_config-bestand met de hand te bewerken en de verwijzing naar die opties uit de regel te verwijderen:

cflags="-I$pkgincludedir -Os -w -pipe -march=native -Xclang -target-feature -Xclang -aes -Qunused-arguments -O2 -g -DDBUG_OFF " #note: end space!

die ik herschreef als:

cflags="-I$pkgincludedir -Os -w -pipe -march=native -O2 -g -DDBUG_OFF " #note: end space!

Antwoord 7

Ik weet dat dit oud is, maar als iemand nog steeds deze zlib-fout krijgt, zorg er dan voor dat je het volgende hebt getypt:
rvm gebruik

(welke versie je ook gebruikt)

Ik zou zweren dat ik dat deed. Gewoon posten voor het geval iemand zijn haar uittrekt en dit helpt. Als niet veel geluk. 🙂


Antwoord 8

Ik kwam dit probleem tegen tijdens het installeren van bundels voor redmine op fedora 23. De oplossing die ik vond was om dit commando uit te voeren – sudo dnf install redhat-rpm-config.

Dit loste niet alleen mijn probleem op met het installeren van mysql2, maar ook voor nokogiri en redcarpet.


Antwoord 9

Op mijn Ubuntu 16.04.4 LTSmet mysql Ver 15.1 Distrib 10.0.34-MariaDB, voor debian-linux-gnu (x86_64) met readline 5.2, het volgende werkte:

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

Ik zag dat de foutmelding van het huidige installatieprogramma suggereert dat het wordt uitgevoerd

apt-get install libmysqlclient-dev

Dit zou ook kunnen werken.

Other episodes