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-config
door 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 installed
uitvoert, worden alle geïnstalleerde pakketten op uw computer afgedrukt (opmerking: yum
op RHEL vereist dat u een Red Hat Network-repository toevoegt [Ik gebruik EPEL], en voer het uit via sudo
).
Ik had mysql
en 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 missing
en soortgelijke andere build-fouten op te lossen.
Lang verhaal kort, na een mysqldump -u root -ppassword --all-databases > full-dump.sql
voor 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.