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.


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)


@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

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

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


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

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

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

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.


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

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.


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.



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 




0

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

Spróbuj zrobić:

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

-1

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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.