Gem-Installation: Fehler beim Erstellen der nativen Gem-Erweiterung (Header-Dateien können nicht gefunden werden)


356

Ich verwende Fedora 14 und habe MySQL und MySQL Server 5.1.42 installiert und ausgeführt. Jetzt habe ich versucht, dies als Root-Benutzer zu tun:

gem install mysql

Aber ich bekomme diesen Fehler:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

Was ist hier los? In installiertem Ruby 1.8.7. und die neuesten Rubygems 1.3.7.


Nur eine kurze Vermutung: Haben Sie die Entwickler-Fileheaders für MySQL
DrColossos

Wie kann ich diese Entwickler-Fileheaders bekommen?
Tim

1
Ich habe es in Ubuntu wie folgt gemacht: apt-get install ruby-dev rubygems gem installiere mysql - with-mysql-config = / usr / bin / mysql_config Alles funktioniert einwandfrei.
Ivan Carrasco Quiroz

Antworten:


757

Für diejenigen, die durch die akzeptierte Antwort verwirrt sein könnten, wie ich es war, müssen Sie auch die Ruby-Header installiert haben [ Ruby-Devel ].

Der Artikel, der mein Fell gerettet hat, ist hier .

Und dies ist die überarbeitete Lösung (beachten Sie, dass ich auf Fedora 13 bin):

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

Für Debian und andere Distributionen, die Verpackungen im Debian-Stil verwenden, werden die Ruby-Entwicklungsheader installiert von:

sudo apt-get install ruby-dev

Für Ubuntu werden die Ruby-Entwicklungsheader installiert von:

sudo apt-get install ruby-all-dev

Wenn Sie eine frühere Version von Ruby verwenden (z. B. 2.2), müssen Sie Folgendes ausführen:

sudo apt-get install ruby2.2-dev

(wobei 2.2 Ihre gewünschte Ruby-Version ist)


@ NoBugs Danke für die zusätzlichen Infos :)
Brian Lacy

1
Dies funktionierte, als ich ein Problem beim Versuch hatte, eine App mit Ruby on Rails zu erstellen. es beschwerte sich darüber, dass es json nicht installieren kann und der Bundler nicht weitermachen kann. Installation von Ruby-Devel hat funktioniert.
Jack

2
Zusätzlich zu Ruby-Dev, das oben von @NoBugs gepostet wurde, brauchte ich auch libmysqlcient-dev unter Ubuntu (12.04). (Oder sehen Sie einfach die Debian / Ubuntu-Antwort von Damian Nowak unten.)
Jon Garvin

1
Arbeitete für mich an RHEL6, als ich Probleme hatte, Jekyll zu installieren.
David Mason

Dies hat mir bei der Installation von fpm geholfen, wahrscheinlich bei der Installation von Ruby-basierter Software. Ich habe benutzt yum -y install gcc ruby-devel rubygems.
Zoltán

91

Red Hat, Fedora:

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

Debian, Ubuntu:

apt-get install libmysqlclient-dev ruby-dev
gem install mysql

Arch Linux:

pacman -S libmariadbclient
gem install mysql

Ist es dieses? mysql-devel.i686: Dateien für die Entwicklung von MySQL-Anwendungen
Tim

1
Natürlich wird MySQL-Entwicklung benötigt. Die Frage ist, was außerdem benötigt wird. Vielleicht versuchen Sie dies: fedora-tunisia.org/?q=node/44 Lassen Sie mich wissen, ob es funktioniert.
Nowaker

Ich hatte gerade dieses Problem hier: stackoverflow.com/questions/6297751/… Gute Lösung!
Kevin Brown

Was Sie sagen, ist erforderlich, aber es ist Ruby-Devel, das benötigt wird, um die fragliche Fehlermeldung zu beheben.
Edward Anderson

Übrigens auf RedHat-System ist ruby-devel.
Texasbruce

50

Für alle, die dies 2015 lesen: Wenn Sie das Paket installiert haben ruby2.0, müssen Sie das Matching installieren ruby2.0-dev, um die entsprechenden Ruby-Header zu erhalten. Gleiches gilt für ruby2.1und ruby2.2usw. Zum Beispiel:

$ sudo apt-get install ruby2.2-dev

Auf Fedora 22:sudo dnf install ruby-devel
Geoffrey De Smet

Vielen Dank! Rubin ist manchmal so komisch.
Nelsonenzo

Gleiches gilt für Ruby 2.3.
Charles Roper

24

es scheint, dass die

yum install ruby-devel

war genug für mich aufzutreten

gem install datamapper

danach.

Möglicherweise müssen Sie weitere Pakete installieren:

yum install gcc gcc-c++

um native Erweiterungen erstellen zu können


1
Ich bekam einen sehr seltsamen Fehler ohne klare Nachricht, und das lag daran, dass gcc-Pakete nicht installiert wurden. :( Dieser Beitrag hat mich an diesen grundlegenden Schritt erinnert .; P
BrunoJCM

9

MAC-Benutzer können dieses Problem haben, wenn die xcode-Tools nicht ordnungsgemäß installiert sind. Unten finden Sie den Befehl, um das Problem zu beheben.

xcode-select --install

Ja, das war das Problem. Vielen Dank!
Eduard Ghinea

Und dann dieser sudo gem install -n /usr/local/bin cocoapods Daumen hoch
hyd00

8

Ich habe hier die Lösung gefunden .

# yum install mysql-devel gcc make
# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config

8

Dieser Beitrag hat mir geholfen. Vielen Dank.

Unter Linux (Ubuntu 12.10) musste ich laufen

sudo apt-get install ruby
sudo apt-get install rubygems
sudo apt-get install ruby-dev

bevor ich erfolgreich rennen konnte

sudo gem install jekyll

4

Wenn Sie gem und ruby ​​installiert haben und keine Schienen installieren können, installieren Sie ruby ​​dev lib.

sudo apt-get install ruby-dev

Für mich geht das. Ich habe die andere Lösung ausprobiert.


Ich habe Ubuntu 16.04LTS. Ich denke, das gleiche gilt für andere frühere Versionen.
Hafiz Shehbaz Ali

2

Red Hat, Fedora:

sudo dnf -y install gcc-c++ redhat-rpm-config ruby-devel gcc mysql-devel rubygems

2

Für diejenigen, die immer noch Probleme haben, wie ich es getan habe (ich verwende Ubuntu 16.04), musste ich die folgenden Befehle eingeben, um einige Edelsteine ​​wie bcrypt, pg und andere zu installieren. Sie sind alle bis auf eine ähnlich wie oben.

sudo apt-get install ruby-dev -y
sudo apt-get install libpq-dev -y
sudo apt-get install libmysqlclient-dev
sudo apt-get install build-essential patch -y

Dadurch konnte ich Edelsteine ​​wie PG, bcrypt und recaptcha installieren.


1

Meine erste Lösung bestand darin, die oben genannten Fehler durch die Installation zu lösen ruby-devel, patchund rubygems.

Mein Problem war etwas anders, da bcrypt 3.1.11 immer noch Probleme beim Kompilieren und Installieren unter Fedora 23 hatte. Ich benötigte zusätzliche Pakete. Nachdem ich sichergestellt hatte, dass ich das oben genannte installiert hatte, hatte ich immer noch Probleme:

gcc: error: conftest.c: No such file or directory

gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory

Von hier aus musste ich folgendes tun:

  • Ich habe dafür gesorgt, dass mir keine C-Compiler-Tools fehlen sudo dnf group install "C Development Tools and Libraries"

  • Dann lief ich sudo dnf install redhat-rpm-config, um das oben aufgeführte gcc-Problem zu beheben.

Einen Artikel über Fedore Project finden Sie hier . Möglicherweise finden Sie auch Antworten auf andere Anforderungen.



1

Sie müssen folgende Pakete installieren:

  • Ruby-Dev

  • gcc

  • libffi-dev

  • machen

Hier ist der Befehl für debian distro:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 


0

Es ist notwendig, redhat-rpm-config zu installieren. Ich denke, es löst dein Problem!



0

Möglicherweise haben Sie die RVM durcheinander gebracht.

Versuche es:

\curl -sSL https://get.rvm.io | bash -s stable --rails

-1

Nur um einen Pfad zur ruby.h-Datei in meinem PATH hinzuzufügen,
zum Beispiel:

export PATH = $ PATH: / usr / src / ruby-xxxxxx

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.