Dla kontekstu na zdalnym serwerze, który ma zaporę ogniową. Konfiguruję środowisko za pośrednictwem serwera proxy. Mam ruby 1.8.7
. Kiedy próbuję zainstalować klejnot ...
sudo gem install --http-proxy <host address>:<port> json
Otrzymuję następujący błąd:
Building native extensions. This could take a while...
ERROR: Error installing json:
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/lib64/ruby/gems/1.8/gems/json-1.8.1 for inspection.
Results logged to /usr/lib64/ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
Ponieważ nie byłem pewien, na czym polega problem, poszukałem go i znalazłem
instalacja gem: Nie udało się zbudować natywnego rozszerzenia gem (nie można znaleźć plików nagłówkowych) - instrukcje tutaj wydają się być specyficzne dla instalowanego gem.
Jak zainstalować klejnot json - nie udało się zbudować rozszerzenia natywnego gem Wydaje się, że jest to nieco inny błąd.
Jakieś wskazówki? Dzięki!
/usr/lib/ruby/ruby.h
pliku, jeśli jest obecny, pokaż nam komunikat o błędzie zgem_make.out
.Odpowiedzi:
Aktualizacja z czasów współczesnych, jak stwierdził mimoralea :
lub ogólny sposób:
Pierwszy opublikowany link jest dokładnie w twoim przypadku: nie ma zainstalowanego środowiska programowania Ruby. Środowisko programistyczne jest potrzebne do kompilacji rozszerzeń Ruby, które są w większości napisane
C
. Serwer proxy nie ma nic wspólnego z problemem: wszystko jest pobierane dobrze, po prostu kompilacja kończy się niepowodzeniem.Proponuję zainstalować pakiet
ruby-dev
(ruby-devel
dla dystrybucji opartych na rpm) na komputerze docelowym.gcc
pakiet może być również potrzebny.Próbować:
Lub, dla dystrybucji Redhat:
Lub, dla [otwórz] SuSE:
źródło
ruby-dev
ITSruby-devel
. Oto, gdzie znalazłem dokładnie to, co potrzebne - digitalocean.com/community/articles/...sudo zypper install ruby-devel
dla openSUSEruby2.2-dev
(lub dowolna wersja, którą zainstalowałeś).W przypadku Xcode 11 w systemie macOS 10.14 może się to zdarzyć nawet po zainstalowaniu Xcode i zainstalowaniu narzędzi wiersza polecenia i zaakceptowaniu licencji z
Problem polega na tym, że Xcode 11 dostarcza zestaw SDK dla macOS 10.15, który zawiera nagłówki dla ruby2.6, ale nie dla ruby2.3 dla macOS 10.14. Możesz sprawdzić, czy to jest twój problem, uruchamiając
który na MacOS 10.14 z Xcode 11 drukuje nieistniejącą ścieżkę
Jednak Xcode 11 instaluje w systemie macOS 10.14 SDK
/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
. Nie jest konieczne zanieczyszczanie katalogów systemowych przez instalowanie starych plików nagłówkowych, jak sugerowano w innych odpowiedziach. Zamiast tego, wybierając ten zestaw SDK, zostaną znalezione odpowiednie nagłówki ruby2.3:To powinno teraz poprawnie wydrukować
Podobnie
gem install
powinien działać, gdy ten zestaw SDK jest wybrany.Aby wrócić do bieżącego zestawu SDK Xcode, użyj
źródło
W przypadku korzystania z Ruby 2.0 lub 2.2 (dzięki @ Patrick-Davey) lub 2.3 (dzięki @juanitofatas).
Dostajesz tutaj wzór ...
źródło
sudo apt-get install ruby2.2-dev
E: Unable to locate package ruby2.2-dev
E: Couldn't find any package by regex 'ruby2.2-dev'
sudo apt-add-repository -y ppa:brightbox/ruby-ng && sudo apt-get update && sudo apt-get install -y ruby2.2-dev
Zetknąłem się również z tym problemem, ponieważ instaluję Ruby na Ubuntu przez brightbox i myślałem, że ruby-dev to bagażnik ruby. Więc nie zainstalowałem. Zainstaluj ruby2.3-dev naprawia to:
źródło
Dla tych, którzy dostają to na Mac OS X, może być konieczne uruchomienie następującego polecenia, aby zainstalować narzędzia wiersza polecenia XCode, nawet jeśli masz już zainstalowany XCode:
Musisz także uzgodnić warunki XCode, uruchamiając następującą komendę:
źródło
su - $USER -c 'xcode-select --install'
Miałem podobny problem z użyciem cygwin do uruchomienia następującego polecenia:
Rozwiązałem go, instalując następujące pakiety cygwin:
źródło
/cygdrive/z/.gem/ruby/extensions/x86-cygwin/json-1.8.3/json/ext/parser.so: [BUG] Segmentation fault at 0x0001b8
rm -rf ~/.gem/
i ponowne wydanie polecenia.ruby-dev
na raspberry piWiększość głosowanych rozwiązań nie działa na mojej maszynie (Linux 18.04). Po dokładnym przyjrzeniu się zauważyłem, że brakuje g ++. Rozwiązany z
źródło
make
ig++
naprawiłem również mój problem na Ubuntu 18.04!w przypadku korzystania z SUSE
źródło
sudo zypper in ruby-devel
.Xcode 11 / macOS Catalina
W Xcode 11 / macOS Catalina pliki nagłówkowe nie są już w starej lokalizacji, a stary
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
plik nie jest już dostępny.Zamiast tego nagłówki są teraz instalowane w
/usr/include
katalogu bieżącej ścieżki SDK:Większość tego katalogu można znaleźć za pomocą danych wyjściowych
xcrun --show-sdk-path
. A jeśli dodasz tę ścieżkę doCPATH
zmiennej środowiskowej, wówczas skrypty kompilacji (w tym te wywoływane przezbundle
) będą na ogół w stanie ją znaleźć.Rozwiązałem ten problem, ustawiając
CPATH
mój.zshrc
plik:Po otwarciu nowej powłoki (lub uruchomieniu
source .zshrc
) nie otrzymuję już komunikatu o błędzie mkmf.rb nie mogę znaleźć plików nagłówkowych dla ruby w /usr/lib/ruby/ruby.h, a rubygemy instalują się poprawnie.źródło
Mojave 10.14.6
iXCode 11.3.1
. Dziękuję bardzo, zajęło mi 1 dzień, aby rozwiązać ten problem: /W Fedorze 21 i nowszych wystarczy otworzyć terminal i zainstalować pliki Ruby Development jako root.
źródło
Może być konieczne zainstalowanie gcc po instalacji ruby-devel
źródło
Xcode -> Preferencje -> Lokalizacje
zmień Narzędzia wiersza poleceń na Xcode 11.2.1
źródło
Na komputerze Mac 10.14 pliki nagłówkowe nie wydają się być zainstalowane we właściwym miejscu. Zamiast zmieniać ścieżki jak inne poprawki, mogłem po prostu uruchomić to:
Postępuj zgodnie z instrukcjami, aby rozwiązać ten problem.
źródło
Musisz zainstalować cały rubin, a nie tylko minimalną paczkę. Prawidłowe polecenie do użycia to:
Następujące polecenie również nie zainstaluje pełnego ruby:
źródło
W przypadku Ubuntu 18, po sprawdzeniu pliku dziennika wymienionego podczas instalacji
Wyniki są rejestrowane w /var/canvas/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nio4r-2.5.2/gem_make.out
z
Zauważyłem, że
make
nie znaleziono. Tak zainstalowanewszystko działało
źródło
wypróbuj dla Ubuntu 16.04
źródło