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.

Tim
quelle
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)

Brian Lacy
quelle
@ 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
Nowaker
quelle
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
Dror S.
quelle
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

andrej
quelle
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
Ajit Singh
quelle
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
Tim
quelle
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
qkrijger
quelle
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.

Hafiz Shehbaz Ali
quelle
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
mkungla
quelle
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.

Mike
quelle
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.

Andrew Lobban
quelle
1
sudo apt-get install ruby-dev

Dieser Befehl hat das Problem für mich gelöst!

Viduni Wickramarachchi
quelle
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 
rmpestano
quelle
0

in openSUSE:

zypper in ruby-devel

Funktioniert für mich :)

Raul Libório
quelle
0

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

user3645907
quelle
0

Das hat bei mir funktioniert:

yum -y install gcc mysql-devel ruby-devel rubygems
Shveta Sachdeva
quelle
0

Möglicherweise haben Sie die RVM durcheinander gebracht.

Versuche es:

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

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

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

Mareg
quelle