gem install: Impossibile creare l'estensione nativa gem (impossibile trovare i file di intestazione)


356

Sto usando Fedora 14 e ho MySQL e MySQL server 5.1.42 installati e in esecuzione. Ora ho provato a farlo come utente root:

gem install mysql

Ma ottengo questo errore:

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

Cosa c'è che non va qui? In ruby ​​installato 1.8.7. e gli ultimi rubygems 1.3.7.


Solo una rapida ipotesi: hai i file header dev per MySQL
DrColossos,

Come posso ottenere queste intestazioni di file di sviluppo?
Tim

1
L'ho fatto in Ubuntu nel modo seguente: apt-get install ruby-dev rubygems gem install mysql - con-mysql-config = / usr / bin / mysql_config Tutto funziona bene.
Ivan Carrasco Quiroz,

Risposte:


757

Per coloro che potrebbero essere confusi dalla risposta accettata, come lo ero io, devi anche avere le intestazioni ruby ​​installate [ ruby-devel ].

L'articolo che mi ha salvato la pelle è qui .

E questa è la soluzione rivista (nota che sono su Fedora 13):

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

Per Debian e altre distribuzioni che usano il packaging in stile Debian, le intestazioni di sviluppo ruby ​​sono installate da:

sudo apt-get install ruby-dev

Per Ubuntu le intestazioni di sviluppo ruby ​​sono installate da:

sudo apt-get install ruby-all-dev

Se stai utilizzando una versione precedente di ruby ​​(come 2.2), dovrai eseguire:

sudo apt-get install ruby2.2-dev

(dove 2.2 è la versione di Ruby desiderata)


@NoBugs Grazie per le informazioni aggiuntive :)
Brian Lacy,

1
questo ha funzionato quando ho avuto un problema cercando di creare un'app usando ruby ​​su rotaie. si è lamentato di come non possa installare json e il bundler non possa continuare. l'installazione di ruby-devel ha funzionato.
Jack

2
Oltre a ruby-dev pubblicato da @NoBugs sopra, avevo anche bisogno di libmysqlcient-dev su Ubuntu (12.04). (Oppure, vedi solo la risposta Debian / Ubuntu di Damian Nowak di seguito).
Jon Garvin,

1
Ha funzionato per me su RHEL6 quando ho avuto problemi con l'installazione di jekyll.
David Mason,

Questo mi ha aiutato a installare fpm, probabilmente aiuta a installare qualsiasi software basato su ruby. Ho usato 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

È questo? mysql-devel.i686: File per lo sviluppo di applicazioni MySQL
Tim

1
Di sicuro è necessario mysql-devel. La domanda è che cosa è necessario inoltre. Forse prova questo: fedora-tunisia.org/?q=node/44 Fammi sapere se funziona.
Nowaker,

Ho appena avuto questo problema qui: stackoverflow.com/questions/6297751/… Buona soluzione!
Kevin Brown,

Quello che dici è necessario, ma è ruby-devel che è necessario per correggere il messaggio di errore in questione.
Edward Anderson,

BTW sul sistema RedHat è ruby-devel.
texasbruce,

50

Per chiunque legga questo nel 2015: se ti è capitato di installare il pacchetto ruby2.0, devi installare la corrispondenza ruby2.0-devper ottenere le intestazioni Ruby appropriate. Lo stesso vale per ruby2.1e ruby2.2, ecc. Ad esempio:

$ sudo apt-get install ruby2.2-dev

Su fedora 22:sudo dnf install ruby-devel
Geoffrey De Smet,

Grazie! il rubino è così strano a volte.
nelsonenzo,

Lo stesso vale per il rubino 2.3.
Charles Roper,

24

sembra che il

yum install ruby-devel

mi è bastato esibirmi

gem install datamapper

successivamente.

È possibile che sia necessario installare altri pacchetti:

yum install gcc gcc-c++

per poter costruire estensioni native


1
Stavo ottenendo un errore molto strano, senza un messaggio chiaro, ed era perché i pacchetti gcc non erano stati installati. :( Questo post mi ha fatto ricordare questo passaggio fondamentale.; P
BrunoJCM,

9

Gli utenti MAC possono riscontrare questo problema quando gli strumenti xcode non sono installati correttamente. Di seguito è riportato il comando per eliminare il problema.

xcode-select --install

sì, quello era il problema. Molte grazie!
Eduard Ghinea,

E poi questo sudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00

8

Ho trovato la soluzione qui .

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

8

Questo post mi ha aiutato. Molte grazie.

Su Linux (Ubuntu 12.10) dovevo correre

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

prima che potessi correre con successo

sudo gem install jekyll

4

Se hai installato gem e ruby ​​e non riesci a installare i binari, installa ruby ​​dev lib.

sudo apt-get install ruby-dev

Per me funziona. Ho provato la soluzione diversa.


Ho Ubuntu 16.04LTS. Penso che lo stesso sarà per altre versioni precedenti.
Hafiz Shehbaz Ali,

2

Red Hat, Fedora:

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

2

Per quelli che stanno ancora riscontrando problemi, come ho fatto (sto usando Ubuntu 16.04), ho dovuto inserire i seguenti comandi per ottenere alcune gemme come bcrypt, pg e altre installate. Sono tutti simili a quelli sopra tranne uno.

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

Questo mi ha permesso di installare gemme come PG, bcrypt e recaptcha.


1

La mia soluzione iniziale era quello di risolvere gli errori di cui sopra con l'installazione ruby-devel, patche rubygems.

Il mio problema era un po 'diverso poiché bcrypt 3.1.11 aveva ancora problemi di compilazione e installazione su Fedora 23. Avevo bisogno di pacchetti aggiuntivi. Quindi, dopo aver verificato di aver installato quanto sopra, avevo ancora problemi:

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

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

Da qui ho dovuto fare quanto segue:

  • Mi sono assicurato che non mi mancavano gli strumenti del compilatore C. sudo dnf group install "C Development Tools and Libraries"

  • Quindi ho corso sudo dnf install redhat-rpm-configper risolvere il problema di gcc sopra elencato.

Puoi trovare una recensione qui sul Fedore Project . Puoi anche trovare risposte ad altre esigenze.



1

È necessario installare i seguenti pacchetti:

  • ruby-dev

  • gcc

  • libffi-dev

  • rendere

Ecco il comando per debian distro:

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


0

È necessario installare redhat-rpm-config su. Immagino che risolva il tuo problema!



0

Potresti aver sbagliato con la RVM.

Cerca di fare:

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

-1

Solo per aggiungere il percorso al file ruby.h nel mio PERCORSO,
ad esempio:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.