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

상황에 따라 방화벽이있는 원격 서버에 있습니다. 프록시를 통해 환경을 설정하고 있습니다. 나는있다 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를 발견했습니다.

힌트가 있습니까? 감사!



답변

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


답변

들어 맥 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


답변

루비 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

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


답변

brightbox를 통해 Ubuntu에 Ruby를 설치 했기 때문에이 문제가 발생 했으며 ruby-dev가 Ruby의 트렁크라고 생각했습니다. 그래서 나는 설치하지 않았다. ruby2.3-dev 수정으로 설치하십시오 :

sudo apt-get install ruby2.3-dev


답변

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

sudo xcode-select --install

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

sudo xcodebuild -license


답변

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

$ gem install rerun

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

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

답변

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

sudo apt-get 설치 g ++