json gem 'mkmf.rb를 설치하는 동안 오류가 루비에 대한 헤더 파일을 찾을 수 없습니다'


407

상황에 따라 방화벽이있는 원격 서버에 있습니다. 프록시를 통해 환경을 설정하고 있습니다. 나는있다 ruby 1.8.7. 보석 설치하려고 할 때 ..

sudo gem install --http-proxy <host address>:<port> json

다음과 같은 오류가 발생합니다.

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

문제가 무엇인지 확신하지 못했기 때문에 googled를 발견했습니다.

힌트가 있습니까? 감사!


/usr/lib/ruby/ruby.h파일의 존재 여부를 확인하십시오 (있는 경우) gem_make.out.
Малъ Скрылевъ

답변:


785

mimoralea가 밝힌 현대 시대의 업데이트 :

루비 2.0 또는 2.2를 사용하는 경우 (@ patrick-davey 덕분에).

sudo apt-get install ruby2.0-dev
sudo apt-get install ruby2.2-dev
sudo apt-get install ruby2.3-dev

또는 일반적인 방법 :

sudo apt-get install ruby-dev

또는

sudo apt-get install ruby`ruby -e 'puts RUBY_VERSION[/\d+\.\d+/]'`-dev

게시 한 첫 번째 링크는 정확한 경우입니다. 루비 개발 환경이 설치되어 있지 않습니다. 개발 환경은 대부분로 작성된 루비 확장명을 컴파일하는 데 필요합니다 C. 프록시는 문제와 아무 관련이 없습니다. 모든 것이 제대로 다운로드되고 컴파일이 실패합니다.

대상 시스템에 ruby-dev( ruby-develrpm 기반 배포판 용) 패키지 를 설치하는 것이 좋습니다 .

gcc 패키지도 필요할 수 있습니다.

시험:

$ sudo apt-get install ruby-dev

또는 Redhat 배포판의 경우 :

$ sudo yum install ruby-devel

또는 [open] SuSE의 경우 :

$ sudo zypper install ruby-devel

2
감사! 나는 그 질문에 대한 답이 모듈에 따라 다르다는 것을 의미했다. 나는 ruby-dev그 대신에 생각합니다 ruby-devel. 여기 내가 정확히 필요한 것을 발견 한 곳 -digitalocean.com/community/articles/…
Navneet

9
Fedora 20에서 ruby-devel을 설치 한 후 *** extconf.rb failed *** 오류가 발생했습니다. 제안한대로 gcc를 설치하면 모든 것이 잘 작동합니다.
Wayne Riesterer

sudo zypper install ruby-devel
superbob

우분투에서는 아무것도하지 않습니다. 누락 된 패키지 ruby2.2-dev(또는 설치 한 버전)입니다.
루이스 드 수사

2
아니,이 답변은 아무것도 해결하는 데 도움이되지 않았습니다. 정답은 mimoralea의 답변입니다 .
Luís de Sousa

177

들어 맥 OS 10.14에 엑스 코드 (11) 이도 엑스 코드를 설치하고 명령 줄 도구를 설치하고 라이센스에 동의 한 후 발생할 수

sudo xcode-select --install
sudo xcodebuild -license accept

문제는 Xcode 11이 macOS 10.15 SDK를 제공하지만 여기에는 ruby2.6 용 헤더가 포함되어 있지만 macOS 10.14의 ruby2.3에는 포함되지 않습니다. 다음을 실행하여 이것이 문제인지 확인할 수 있습니다.

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

Xcode 11이있는 macOS 10.14에서 존재하지 않는 경로를 인쇄합니다.

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

그러나 Xcode 11은 내에 macOS 10.14 SDK를 설치합니다 /Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk. 다른 답변에서 제안한대로 이전 헤더 파일을 설치하여 시스템 디렉토리를 오염시킬 필요는 없습니다. 대신 해당 SDK를 선택하면 적절한 ruby2.3 헤더가 발견됩니다.

sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

이제 올바르게 인쇄해야합니다

/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

마찬가지로 gem install해당 SDK를 선택하는 동안 작동해야합니다.

현재 Xcode SDK로 다시 전환하려면

sudo xcode-select --switch /Applications/Xcode.app

14
전설. 정확히 10.14.6에 대한 내 문제. 슬픈 것은 두 번 공표 할 수 없습니다.
Diego Freniche

2
선생님은 모호한 지식의 군주입니다. 많은 감사,
루빈 시몬스

자세한 정보 감사합니다! "오류 : jekyll 설치 오류 : jekyll-sass-converter에는 Ruby 버전> = 2.4.0이 필요합니다." 그것은 나를 웃게 만든다.
Nickolay Olshevsky 님이

이 경우 @NickolayOlshevsky, 현재 2.6.5 버전의 homebrew를 통해 루비를 설치해야합니다.
joki

1
당신은 코딩 전설을 놀라게합니다.
Aljosha Novakovic

75

루비 2.0 또는 2.2 (@ patrick-davey 감사) 또는 2.3 (@juanitofatas 감사)을 사용하는 경우.

sudo apt-get install ruby-dev
sudo apt-get install ruby2.0-dev
sudo apt-get install ruby2.2-dev
sudo apt-get install ruby2.3-dev

그리고 당신은 여기에 패턴을 얻습니다 ...


6
또는 2.2를 사용하는 경우 ...sudo apt-get install ruby2.2-dev
patrickdavey

@ patrick-davey E: Unable to locate package ruby2.2-dev E: Couldn't find any package by regex 'ruby2.2-dev'
Aparichith

@dson 아마도 이전 Ubuntu 버전을 사용하고있을 것입니다. 업그레이드하십시오.
Pithikos

같은 오류가 발생했으며 완전히 업데이트 된 Linux Mint 버전을 사용하고 있습니다. OS 버전이 문제라고 생각하지 않습니다.
Andrew Faulkner

2
Trusty (14.04)와 같은 이전 버전의 Ubuntu를 사용하는 경우 Ruby 용 Brightbox PPA를 추가하십시오.sudo apt-add-repository -y ppa:brightbox/ruby-ng && sudo apt-get update && sudo apt-get install -y ruby2.2-dev
Siddhu


19

Mac OS X에서이 기능을 사용하는 사용자는 XCode가 이미 설치되어 있어도 다음 명령을 실행하여 XCode 명령 행 도구를 설치해야합니다.

sudo xcode-select --install

또한 다음 명령을 실행하여 XCode의 이용 약관에 동의해야합니다.

sudo xcodebuild -license

이것은 저에게 정답이었습니다. 루비 개발 헤더가 없었습니다. xCode를 설치하면 원래 명령을 실행 해 보았습니다. 감사!
Sweet Chilly Philly

Mojave가있는 OSX에서는 다음과 같이 실행해야했습니다.su - $USER -c 'xcode-select --install'
Belden

이것은 나에게도 효과가있었습니다.
adougies

11

cygwin을 사용하여 다음 명령을 실행하는 데 비슷한 문제가 발생했습니다.

$ gem install rerun

다음 cygwin 패키지를 설치하여 해결했습니다.

  • 루비-데벨
  • libffi-devel
  • gcc 코어
  • gcc-g ++
  • 하다
  • automake1.15

이 segfaults 나를 위해 :/cygdrive/z/.gem/ruby/extensions/x86-cygwin/json-1.8.3/json/ext/parser.so: [BUG] Segmentation fault at 0x0001b8
rr-

rm -rf ~/.gem/명령 을 수행 하고 재발행하여 해결되었습니다 .
rr-

ruby-devraspberry pi에
CONvid19

11

대부분의 투표 솔루션이 내 컴퓨터에서 작동하지 않았습니다 (linux mint 18.04). 주의 깊게 살펴본 후 g ++이 누락되었음을 발견했습니다. 로 해결

sudo apt-get 설치 g ++


1
이것은 우분투 18.04에서 나를 위해 일했습니다. 또한 g ++ 설치가 작동하기 전에 sudo apt-get install make를 수행해야했습니다.
스콧 린드너

Ubuntu 18.04에 설치 make하고 g++문제를 해결할 수 있습니까 ?
Arda


5

Xcode 11 / macOS 카탈리나

Xcode 11 / macOS Catalina에서 헤더 파일은 더 이상 이전 위치 /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg에 없으며 기존 파일은 더 이상 사용할 수 없습니다.

대신 헤더가 /usr/include현재 SDK 경로 의 디렉토리에 설치됩니다 .

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

이 디렉토리의 대부분은의 출력을 사용하여 찾을 수 있습니다 xcrun --show-sdk-path. 그리고이 경로를 CPATH환경 변수에 추가하면 스크립트를 통해 작성하십시오 (bundle 하면 일반적으로 )에서 찾을 수 있습니다.

CPATH.zshrc파일 에서 my 를 설정 하여이 문제를 해결했습니다 .

export CPATH="$(xcrun --show-sdk-path)/usr/include"

새 쉘을 열거 나 (을 실행 한 후 source .zshrc) mkmf.rb가 /usr/lib/ruby/ruby.h에서 루비의 헤더 파일을 찾을 수없고 루비 젬이 올바르게 설치 된다는 오류 메시지가 더 이상 나타나지 않습니다 .

macOS 이외의 플랫폼 구축에 대한 참고 사항

iOS / tvOS / watchOS와 같은 비 macOS 플랫폼으로 구축하는 경우이 변경으로 인해 해당 플랫폼에 macOS SDK가 포함되어 빌드 오류가 발생합니다. 해결하려면 CPATH로그인시 환경 변수를 설정하지 않거나 다음 xcodebuild과 같이 실행될 때 임시로 공백으로 설정하십시오 .

CPATH="" xcodebuild --some-args

2
CPATH에 대한 문서가 있습니까? 그것을 설정하면 문제가 해결되지 않습니다. 처음에 값을 확인하면 정의되지 않은 것처럼 보입니다.
Ilias Karim

1
gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html- 사용중인 언어 / 컴파일러에 따라 다른 환경 변수를 찾아야 할 수도 있습니다. 그것은 기본적으로 해제 될 것이라고 정상
아론 Brager

그리고 다른 곳에서 보지 못한 경우 Xcode 경로 / 이름에 공백이 없습니다.
Feldur

여기에있는 모든 대답에서, 이것이 나를 위해 일한 유일한 솔루션입니다. 나는에 생각 Mojave 10.14.6하고 XCode 11.3.1. 정말 고마워요,이 문제를 해결하기 위해 하루가 걸렸습니다 : /
user2350644

4

Fedora 21 이상에서는 간단히 터미널을 열고 Ruby 개발 파일을 루트로 설치하면됩니다.

dnf install ruby-devel

2

ruby-devel을 설치 한 후 gcc를 설치해야 할 수도 있습니다



1

Mac 10.14에서 헤더 파일이 올바른 위치에 설치되지 않은 것 같습니다. 다른 수정과 같이 경로를 변경하지 않고 다음과 같이 실행할 수있었습니다.

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

지시 사항을 따르면이 문제가 해결되었습니다.


0

최소 패키지뿐만 아니라 전체 루비를 설치해야합니다. 올바른 명령은 다음과 같습니다.

sudo apt install ruby-full

다음 명령은 완전한 루비를 설치하지 않습니다.

sudo apt-get install ruby2.3-dev

0

Ubuntu 18의 경우 설치 중에 언급 된 로그 파일을 확인한 후

/var/canvas/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nio4r-2.5.2/gem_make.out에 기록 된 결과

less /var/canvas/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nio4r-2.5.2/gem_make.out

나는 그것을 make찾을 수 없습니다. 그래서 설치하여

sudo apt-get install make

모든 것이 효과가있었습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.