instal gem: Gagal membangun ekstensi asli gem (tidak dapat menemukan file header)

356

Saya menggunakan Fedora 14 dan saya telah menginstal dan menjalankan server MySQL dan MySQL 5.1.42. Sekarang saya mencoba melakukan ini sebagai pengguna root:

gem install mysql

Tapi saya mendapatkan kesalahan ini:

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

Ada apa di sini? Dalam ruby ​​yang diinstal 1.8.7. dan rubygems terbaru 1.3.7.

Tim
sumber
Hanya tebakan cepat: apakah Anda memiliki filehead dev untuk MySQL
DrColossos
Bagaimana saya bisa mendapatkan filehead dev ini?
Tim
1
Saya melakukannya di Ubuntu dengan melakukan hal berikut: apt-get install ruby-dev rubygems gem install mysql - with-mysql-config = / usr / bin / mysql_config Semua berfungsi dengan baik.
Ivan Carrasco Quiroz

Jawaban:

757

Bagi mereka yang mungkin bingung dengan jawaban yang diterima, seperti saya, Anda juga perlu menginstal header ruby [ ruby-devel ].

Artikel yang menyelamatkan kulitku ada di sini .

Dan ini adalah solusi yang telah direvisi (perhatikan bahwa saya menggunakan Fedora 13):

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

Untuk Debian, dan distribusi lainnya menggunakan kemasan gaya Debian header pengembangan ruby ​​dipasang oleh:

sudo apt-get install ruby-dev

Untuk Ubuntu, header pengembangan ruby ​​diinstal oleh:

sudo apt-get install ruby-all-dev

Jika Anda menggunakan versi ruby ​​yang lebih lama (seperti 2.2), maka Anda harus menjalankan:

sudo apt-get install ruby2.2-dev

(di mana 2.2 adalah versi Ruby yang Anda inginkan)

Brian Lacy
sumber
@NoBugs Terima kasih atas info tambahannya :)
Brian Lacy
1
ini bekerja ketika saya punya masalah mencoba membuat aplikasi menggunakan ruby ​​on rails. ia mengeluh tentang bagaimana itu tidak dapat menginstal json dan bundler tidak dapat melanjutkan. menginstal ruby-devel berhasil.
Jack
2
Selain ruby-dev yang diposting oleh @NoBugs di atas, saya juga membutuhkan libmysqlcient-dev di Ubuntu (12.04). (Atau, lihat saja jawaban Debian / Ubuntu oleh Damian Nowak di bawah ini.)
Jon Garvin
1
Bekerja untuk saya di RHEL6 ketika saya kesulitan menginstal jekyll.
David Mason
Ini membantu saya menginstal fpm, mungkin membantu menginstal perangkat lunak berbasis ruby. Saya menggunakan 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
Pembuat sekarang
sumber
Apakah ini yang ini? mysql-devel.i686: File untuk pengembangan aplikasi MySQL
Tim
1
Tentunya mysql-devel dibutuhkan. Pertanyaannya adalah apa yang dibutuhkan selain itu. Mungkin coba ini: fedora-tunisia.org/?q=node/44 Beri tahu saya jika berhasil.
Sekarang lemah
Saya baru saja mengalami masalah ini di sini: stackoverflow.com/questions/6297751/… Solusi yang bagus!
Kevin Brown
Apa yang Anda katakan diperlukan, tetapi ruby-devel yang diperlukan untuk memperbaiki pesan kesalahan yang dimaksud.
Edward Anderson
BTW pada sistem RedHat adalah ruby-devel.
texasbruce
50

Bagi siapa pun yang membaca ini di 2015: jika Anda menginstal paket ruby2.0, Anda harus menginstal yang cocok ruby2.0-devuntuk mendapatkan header Ruby yang sesuai. Hal yang sama berlaku untuk ruby2.1dan ruby2.2, dll. Misalnya:

$ sudo apt-get install ruby2.2-dev
Dror S.
sumber
Pada fedora 22:sudo dnf install ruby-devel
Geoffrey De Smet
Terima kasih! Ruby terkadang sangat aneh.
nelsonenzo
Sama berlaku untuk ruby ​​2.3.
Charles Roper
24

tampaknya

yum install ruby-devel

sudah cukup bagi saya untuk tampil

gem install datamapper

setelah itu.

Mungkin Anda perlu menginstal paket lain:

yum install gcc gcc-c++

untuk dapat membangun ekstensi asli

andrej
sumber
1
Saya mendapatkan kesalahan yang sangat aneh, tanpa pesan yang jelas, dan itu karena paket gcc tidak diinstal. :( Posting ini membuat saya mengingat langkah dasar ini.; P
BrunoJCM
9

Pengguna MAC mungkin menghadapi masalah ini ketika alat xcode tidak diinstal dengan benar. Di bawah ini adalah perintah untuk menghilangkan masalah tersebut.

xcode-select --install
Ajit Singh
sumber
ya, itu masalahnya. Terima kasih banyak!
Eduard Ghinea
Dan maka ini sudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00
8

Saya menemukan solusinya di sini .

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

Posting ini membantu saya. Terima kasih banyak.

Di Linux (Ubuntu 12.10) saya perlu menjalankan

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

sebelum aku berhasil berlari

sudo gem install jekyll
qkrijger
sumber
4

Jika Anda telah menginstal permata dan ruby ​​dan tidak dapat menginstal rel, kemudian instal ruby ​​dev lib.

sudo apt-get install ruby-dev

Ini bekerja untuk saya. Saya sudah mencoba solusi yang berbeda.

Hafiz Shehbaz Ali
sumber
Saya punya Ubuntu 16.04LTS. Saya pikir, yang sama akan untuk versi sebelumnya lainnya.
Hafiz Shehbaz Ali
2

Red Hat, Fedora:

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

Bagi mereka yang masih mengalami masalah, seperti yang saya miliki (saya menggunakan Ubuntu 16.04), saya harus memasukkan perintah berikut untuk mendapatkan beberapa permata seperti bcrypt, pg, dan lainnya yang diinstal. Mereka semua mirip dengan yang di atas kecuali satu.

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

Ini memungkinkan saya untuk menginstal permata seperti, PG, bcrypt, dan recaptcha.

Mike
sumber
1

Solusi awal saya adalah mengatasi kesalahan di atas dengan menginstal ruby-devel, patchdan rubygems.

Masalah saya sedikit berbeda karena bcrypt 3.1.11 masih memiliki masalah dalam kompilasi dan instalasi di Fedora 23. Saya membutuhkan paket tambahan. Jadi setelah memastikan saya menginstal di atas, saya masih mengalami masalah:

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

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

Dari sini saya harus melakukan yang berikut:

  • Saya memastikan bahwa saya tidak kekurangan alat C compiler sudo dnf group install "C Development Tools and Libraries"

  • Kemudian saya berlari sudo dnf install redhat-rpm-configuntuk menyelesaikan masalah gcc yang tercantum di atas.

Anda dapat menemukan tulisan di sini di Proyek Fedore . Anda juga dapat menemukan jawaban untuk kebutuhan lain.

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

Perintah ini memecahkan masalah bagi saya!

Viduni Wickramarachchi
sumber
1

Anda perlu menginstal paket berikut:

  • ruby-dev

  • gcc

  • libffi-dev

  • membuat

Inilah perintah untuk debian distro:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 
rmpestano
sumber
0

di openSUSE:

zypper in ruby-devel

Bekerja untuk saya :)

Raul Libório
sumber
0

Diperlukan untuk menginstal redhat-rpm-config. Saya kira itu menyelesaikan masalah Anda!

pengguna3645907
sumber
0

Ini bekerja untuk saya:

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

Anda mungkin mengacaukan RVM.

Coba lakukan:

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

Hanya untuk menambahkan path ke file ruby.h di PATH saya
misalnya:

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

Mareg
sumber