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.


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)


@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

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

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


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

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

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

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.


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

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.


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.



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 


0

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



0

Anda mungkin mengacaukan RVM.

Coba lakukan:

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

-1

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.