instalacja gem: nie udało się zbudować natywnego rozszerzenia gem (nie można znaleźć plików nagłówkowych)

356

Korzystam z Fedory 14 i mam zainstalowany i uruchomiony serwer MySQL i MySQL 5.1.42. Teraz próbowałem to zrobić jako użytkownik root:

gem install mysql

Ale pojawia się ten błąd:

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

Co tu jest nie tak? W zainstalowanym ruby ​​1.8.7. i najnowsze rubygemy 1.3.7.

Tim
źródło
Szybkie zgadnięcie: czy masz nagłówki plików deweloperów dla MySQL
DrColossos
Jak mogę uzyskać te nagłówki plików deweloperów?
Tim
1
Zrobiłem to w Ubuntu, wykonując następujące czynności: apt-get install ruby-dev rubygems gem install mysql - with-mysql-config = / usr / bin / mysql_config Wszystko działa dobrze.
Ivan Carrasco Quiroz

Odpowiedzi:

757

Dla tych, którzy mogą być zdezorientowani przyjętą odpowiedzią, tak jak ja, musisz także zainstalować nagłówki ruby [ ruby-devel ].

Artykuł, który uratował moją skórę, jest tutaj .

To jest poprawione rozwiązanie (zauważ, że korzystam z Fedory 13):

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

W przypadku Debiana i innych dystrybucji korzystających z pakietu w stylu Debiana nagłówki programistyczne ruby ​​są instalowane przez:

sudo apt-get install ruby-dev

W Ubuntu nagłówki programowania Ruby są instalowane przez:

sudo apt-get install ruby-all-dev

Jeśli używasz wcześniejszej wersji Ruby (takiej jak 2.2), musisz uruchomić:

sudo apt-get install ruby2.2-dev

(gdzie 2.2 to twoja pożądana wersja Ruby)

Brian Lacy
źródło
@NoBugs Dzięki za dodatkowe informacje :)
Brian Lacy
1
działało to, gdy miałem problem z próbą utworzenia aplikacji przy użyciu ruby ​​na szynach. narzekał na to, że nie może zainstalować jsona, a pakiet nie może kontynuować. instalacja ruby-devel działała.
Jack
2
Oprócz ruby-dev opublikowanego przez @NoBugs powyżej, potrzebowałem także libmysqlcient-dev na Ubuntu (12.04). (Lub po prostu zobacz odpowiedź Damiana Nowaka na Debian / Ubuntu poniżej.)
Jon Garvin
1
Pracowałem dla RHEL6, gdy miałem problemy z instalacją jekyll.
David Mason
Pomogło mi to zainstalować fpm, prawdopodobnie pomaga zainstalować oprogramowanie oparte na Ruby. Kiedyś 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
źródło
Czy to jest ten? mysql-devel.i686: Pliki do programowania aplikacji MySQL
Tim
1
Na pewno potrzebny jest mysql-devel. Pozostaje tylko pytanie. Może spróbuj tego: fedora-tunisia.org/?q=node/44 Daj mi znać, czy to działa.
Nowaker
Właśnie miałem ten problem tutaj: stackoverflow.com/questions/6297751/... Dobre rozwiązanie!
Kevin Brown,
To, co mówisz, jest wymagane, ale to jest ruby-devel, który jest potrzebny do naprawy danego komunikatu o błędzie.
Edward Anderson
BTW w systemie RedHat to ruby-devel.
texasbruce
50

Dla każdego, kto to czyta w 2015 roku: jeśli zdarzyło Ci się zainstalować pakiet ruby2.0, musisz zainstalować dopasowanie, ruby2.0-devaby uzyskać odpowiednie nagłówki Ruby. To samo dotyczy ruby2.1i ruby2.2, itd. Na przykład:

$ sudo apt-get install ruby2.2-dev
Dror S.
źródło
Na fedorze 22:sudo dnf install ruby-devel
Geoffrey De Smet
Dziękuję Ci! rubin jest czasem taki dziwny.
nelsonenzo
To samo dotyczy ruby ​​2.3.
Charles Roper
24

wydaje się, że

yum install ruby-devel

wystarczyło mi do wykonania

gem install datamapper

potem.

Możliwe, że będziesz musiał zainstalować kolejne pakiety:

yum install gcc gcc-c++

aby móc budować rozszerzenia natywne

andrej
źródło
1
Otrzymałem bardzo dziwny błąd, bez wyraźnego komunikatu, a to dlatego, że pakiety gcc nie zostały zainstalowane. :( Ten post przypomniał mi o tym podstawowym kroku; P
BrunoJCM
9

Użytkownicy komputerów MAC mogą napotkać ten problem, gdy narzędzia xcode nie zostaną poprawnie zainstalowane. Poniżej znajduje się polecenie pozbycia się problemu.

xcode-select --install
Ajit Singh
źródło
tak, to był problem. Wielkie dzięki!
Eduard Ghinea
A potem ten sudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00
8

Tutaj znalazłem rozwiązanie .

# yum install mysql-devel gcc make
# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
Tim
źródło
8

Ten post pomógł mi. Wielkie dzięki.

W systemie Linux (Ubuntu 12.10) musiałem uruchomić

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

zanim zdołałem biec

sudo gem install jekyll
qkrijger
źródło
4

Jeśli masz zainstalowany klejnot i ruby ​​i nie możesz zainstalować szyn, zainstaluj ruby ​​dev lib.

sudo apt-get install ruby-dev

Mi to pasuje. Wypróbowałem inne rozwiązanie.

Hafiz Shehbaz Ali
źródło
Mam Ubuntu 16.04LTS. Myślę, że tak samo będzie w przypadku poprzedniej wersji.
Hafiz Shehbaz Ali
2

Red Hat, Fedora:

sudo dnf -y install gcc-c++ redhat-rpm-config ruby-devel gcc mysql-devel rubygems
mkungla
źródło
2

Dla tych, którzy wciąż mają problemy, tak jak ja (używam Ubuntu 16.04), musiałem wprowadzić następujące polecenia, aby zainstalować niektóre klejnoty, takie jak bcrypt, pg i inne. Wszystkie są podobne do powyższych, z wyjątkiem jednego.

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

Pozwoliło mi to zainstalować klejnoty takie jak PG, bcrypt i recaptcha.

Mikrofon
źródło
1

Moje pierwsze rozwiązanie było rozwiązać powyższe błędy przy instalacji ruby-devel, patcha rubygems.

Mój problem był nieco inny, ponieważ bcrypt 3.1.11 nadal miał problemy z kompilacją i instalacją na Fedorze 23. Potrzebowałem dodatkowych pakietów. Po upewnieniu się, że zainstalowałem powyższe, nadal mam problemy:

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

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

Odtąd musiałem wykonać następujące czynności:

  • Upewniłem się, że nie brakuje mi żadnych narzędzi kompilatora C. sudo dnf group install "C Development Tools and Libraries"

  • Potem pobiegłem, sudo dnf install redhat-rpm-configaby rozwiązać problem gcc wymieniony powyżej.

Tutaj możesz napisać o Projekcie Fedore . Możesz także znaleźć odpowiedzi na inne potrzeby.

Andrew Lobban
źródło
1
sudo apt-get install ruby-dev

To polecenie rozwiązało problem dla mnie!

Viduni Wickramarachchi
źródło
1

Musisz zainstalować następujące pakiety:

  • ruby-dev

  • gcc

  • libffi-dev

  • robić

Oto polecenie dla dystrybucji debian:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 
rmpestano
źródło
0

w openSUSE:

zypper in ruby-devel

Działa mi :)

Raul Libório
źródło
0

Konieczne jest zainstalowanie redhat-rpm-config na. Myślę, że to rozwiązuje twój problem!

użytkownik3645907
źródło
0

To działało dla mnie:

yum -y install gcc mysql-devel ruby-devel rubygems
Shveta Sachdeva
źródło
0

Możliwe, że pomyliłeś się z RVM.

Spróbuj zrobić:

\curl -sSL https://get.rvm.io | bash -s stable --rails
Aadhya
źródło
-1

Aby dodać ścieżkę do pliku ruby.h w mojej PATH,
na przykład:

eksport ŚCIEŻKA = $ ŚCIEŻKA: / usr / src / ruby-xxxxxx

Mareg
źródło