therubyracer-Gem :: Ext :: BuildError : ERROR : gem 네이티브 확장을 빌드하지 못했습니다.


81

Mavericks에 다음 gem 버전을 설치하려고합니다.

  • libv8 (3.16.14.3)
  • therubyracer (0.12.1)

분명히 therubyracer gem은 libv8에 의존합니다.

1) libv8 설치

libv8은 무엇입니까? 내 약간의 연구가 Google 크롬에서 사용하는 일종의 자바 스크립트 라이브러리임을 암시하는 것 같습니다.

설치하는 데 문제가 있었지만 이 훌륭한 게시물 에는 내 오류와 우회 방법에 대한 잘 설명 된 답변이 모두 포함되어 있습니다.

그래서 설치 libv8와 함께

gem install libv8 -- --with-system-v8

이것은 gem을 설치하지만 gem과 함께 제공되는 버전 대신 v8 라이브러리의 로컬 시스템 설치를 사용한다는 것을 이해합니다. 어느 쪽이든 성공했습니다.

2) Rubyracer 설치

다음 단계에서 therubyracergem을 설치하는 데 문제가있었습니다 . 이 gem이 무엇을하는지 잘 모르겠습니다. 단지 제가하려는 rails 프로젝트의 의존성 일뿐입니다 bundle install.

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

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --without-objclib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include=${v8-dir}/include
    --with-v8-lib
    --without-v8-lib=${v8-dir}/lib
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in 
'configure': You have chosen to use the version of V8 found 
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location

thanks,
The Mgmt

    from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
    from extconf.rb:32:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out

내가 수집 할 수있는 libv8내용에서에서 제공하는 것 대신 로컬 V8 라이브러리를 사용하여 설치하기로 선택 libv8했지만 이제는 로컬 설치를 찾을 수 없습니다.

  • V8이 실제로 설치되어 있는지 어떻게 확인하고 어떻게 찾습니까?
  • 지정된 플래그 중 몇 개를 시도했지만 어느 것도 gem이 올바른 설치 디렉토리를 가리키는 것 같지 않았습니다.
  • 이것은 별도의 주제 일 수 있지만 무엇 extconf.rb입니까? 나는 그것을 몇 군데에서 보았다. 그리고 gcc구체적으로 컴파일러로 무엇을하려고 합니까?

감사!!

편집하다:

  1. libv8을 제거하고을 통해 다시 설치하는 이 솔루션 을 시도 했습니다brew install . 유사한 몇 가지 질문에서도 언급되었습니다. 불운.

  2. 나는 또한 노력 CC, CXX그리고 CPP설명 된대로 환경 변수를 여기에 내가 그 이미 내 따기되면서 어떤 영향이 있다고 생각하지 않지만, gcc v4.6컴파일러.


,이 , 아마?
dax

2
<한숨> 나는 항상 therubyracer를 맥에 설치하는데 문제가 있었다 = (
maerics

답변:


166

이 단계는 저에게 효과적이었습니다.

운영체제 : Maverick Ruby : 2.1.1

gem uninstall libv8
gem install therubyracer -v '0.11.3'
gem install libv8 -v '3.11.8.13' -- --with-system-v8

한 번만 변경하면이 답변을 수락합니다. 작동하도록 3 단계와 2 단계를 전환했습니다. libv8을 설치 한 다음 루비 레이서를 설치합니다. 감사!
user2490003

고마워요. 피곤할 것 같지만 지침에 버전 번호 대신 샤프가 있으면 도움이 될 것입니다. 다른 버전을 설치해야했지만 단순히 메모를 복사합니다.
Taylored 웹 사이트

여기서 언급 한 바와 같이 libv8 버전은 중요합니다. 여기 에서 홀수 지점 릴리스 (버전의 마지막 두 자리)에도 바이너리가 포함되어 있습니다.
Jimmy Chu

설치 / 제거 / 재설치 댄스는 Mojave에서 나를 위해 일했습니다. 이 오래된 물건이 싫어! : D
emptywalls

73

OS X El Capitan에서이 문제에 직면 한 사람들 에게 therubyracer 이슈 스레드 의이 솔루션이 마침내 저에게 효과적이었습니다.

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

나는 또한 brew install gcc이전에 실행 했지만 이것이 실제로 필요한지 확실하지 않습니다.


1
마침내 작동하기 전에 Gemfile.lock을 삭제해야했습니다. 힌트를위한 Thx.
abuzze

3
+1하지만 미래의 독자를 위해 gem install libv8 -v 'A.B.C.D'적절하게 원할 것 입니다. 이 글을 쓰는 현재는 3.16.14.15입니다.
Dave Land

1
+1, 특정 버전의 Rubyracer를 설치하려는 경우 사용 :gem install therubyracer -v 'x.x.x' -- --with-v8-dir=/usr/local/opt/v8-315
avital

1
jottr의 대답과 매우 비슷합니다. 아마 그에게 소리를 지르세요.
omikes

4
저에게 v8 디렉토리는 다음과 같습니다. /usr/local/opt/v8@3.15
SamuelLJohnson

26

먼저 libv8 gem을 제거한 다음 rubyracer를 설치 한 다음 libv8을 설치하십시오.

gem uninstall libv8
gem install therubyracer
gem install libv8 -- --with-system-v8

1
오류 : x86_64의 : 해당 파일이나 디렉토리 g ++ - 4.6 : 오류 : 알 수없는 옵션 '-arch'- 4.6 g ++ : 운 :( 오류의 다음 행은 흥미로운 것 같았다
user2490003

1
libv8전에 설치하는 therubyracer것이 더 잘 작동 한다는 것을 알았습니다 .
Chris Peters

23

github에 게시 된 Tertom의 솔루션 github 문제 와 여기 에 제안 된 다른 모든 솔루션을 시도한 후 나를 위해 해결했습니다 .
나는 똑같은 시스템 구성을 가졌습니다.
이것은 el capitan에 대한 것이므로 질문에 대한 정확한 답은 아니지만 사람들은이 정보가 도움이 될 수 있습니다.

가시성을 위해 여기에서 인용하고 있습니다.

같은 문제를 해결

  • MacOS 10.11.2
  • 루비 1.9.3
  • libv8 3.16.14.13
  • therubyracer 0.12.2

-

brew tap homebrew/versions  
brew install v8-315  
brew link --force v8-315  
bundle install  
brew unlink v8-315

libv8도 설치할 수없는 경우

gem install libv8 --with-system-v8

또는

bundle config build.libv8 --with-system-v8

1
이것은 나를 위해 일했습니다. rubyracer가 설치할 것으로 예상되는 libv8 gem의 버전을 지정해야한다는 것을 알았습니다.
Paul Sturgess

1
bundle config build.libv8 --with-system-v8, 제게 열쇠 라고 생각 합니다. 감사!
natebeaty

이것이 저에게 효과가 있었던 유일한 일이었습니다 (2019 년 말 Catalina에서 시도)
Sam Johnson 19

homebrew / versions가 더 이상 사용되지 않더라도 매우 유용합니다. 내 문제는 현재 링크가 '/ usr / local / bin / d8'에 연결되어 있다는 것입니다. 연결을 해제하고 실행 brew link --force v8-315하면 저에게 효과적 이었습니다. 2020 년 2 월-MacOS 10.15.3. -Ruby 버전 1.9.3-Bundler 1.16.4-libv8 버전 13.16.14.19
Thomas

12

macOS 10.15를 사용하는 모든 사람들을 위해 brew가 변경되었으므로 이러한 명령을 수행해야합니다.

brew install v8@3.15
gem install libv8 -v 'YOUR_VERSION' -- --with-system-v8
gem install therubyracer -v 'YOUR_VERSION' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

6

위의 답변은 저에게 효과적이지 않았습니다. 내 번 들러 구성disable-shared-gems활성화되어 추가 문제가 발생합니다.

Yosemite 10.10.1, Rails 3.2.x 및 Ruby 1.9.3p550을 사용하고 있습니다.

내 다음 스 니펫 bin/setup이 문제를 해결했습니다.

if ! bundle show therubyracer; then
    bundle config build.libv8 --with-system-v8
    gem install --install-dir vendor/bundle libv8 -v 3.16.14.7
    gem install libv8 -v 3.16.14.7
    gem install --install-dir vendor/bundle therubyracer 
fi

4

위의 문제에 대한 해결 방법을 찾았습니다.

이것은 libv8과 therubyracer 간의 호환성에 가깝습니다.

gem install libv8 -v '3.3.10.4' -- --with-system-v8

gem install therubyracer -v '0.10.2'

두 버전이 모두 저와 호환되므로 잘 작동합니다. 처음에는 therubyracer에 0.12.0 버전을 설치하려고했는데 문제가 발생했습니다. 0.10.2 버전으로 전환하면 모든 것이 잘 작동했습니다.

내 현재 OS : Mavericks


3

나는이 문제를 가지고 MacOS Mojave 10.14.2패키지가 어디 발견했을 때 나는이 문제를 해결 할 수있었습니다 v8-315설치 및 폴더 이름은 무엇이었다. 제 경우에는 여기에 /usr/local/opt/v8@3.15있었습니다.

이 문제를 해결하기 위해 다음을 실행했습니다.

brew install v8-315
gem install libv8 -v '3.16.14.15' -- --with-system-v
gem install therubyracer -v '0.12.2' -- --with-system-v8 --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

1

거의 이틀 동안 머리를 부러 뜨린 후 이것은 나를 위해 일했습니다.

rvm install 2.2.2
gem install rails
bundle install

1

libv8의 x64 (64 비트 변형)를 설치 했음에도 불구하고 libv8 종속성으로 인해 macOS Catalina 10.15에서 Rubyracer를 빌드 할 수 없습니다.

저에게 해결책은 Rubyracer에서 mini_racer로 전환하는 것이 었습니다. mini_racer gem이 설치되어 있습니다 (로컬 빌드 할 필요 없음). 계속할 수 있습니다.

시도 해봐!


프로젝트에서 CSS로 컴파일 할 파일이 적은 경우를 제외하고 : /
Martin Carel

1

나의 경우에는

MacOS : Catalina , Ruby : 2.3.3 , rbenv (RVM 아님) 사용, Rubyracer 버전 필요 : 0.12.3 (중요하지 않음)

나는 모든 해결책을 시도했지만 나를 위해 일한 것은 친애하는 pls가 맹목적으로 붙여 넣기 솔루션 (내 경우 bcz)을 복사하지 않고 먼저 읽은 다음 필요한 경우 아래 명령에서 버전을 변경하십시오. 명령의 대부분은 소재 기존 답변 대부분의 일반적인하지만 나를 위해 일한 무엇을 gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)대신 gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315에 감사 준지 다우 자신의 의견에 대한 이 답변

1. brew install gcc
2. brew tap homebrew/versions   (If it wont work then below 2 steps, for latest MacOS version)
2.a. brew tap brewsci/bio
2.b. brew tap brewsci/science
3. brew install v8-315     (uninstall if v8 installed previously without '-315')
4. gem install libv8 -v '3.16.14.19' -- --with-system-v8   (Be careful with the libv8 version mentioned in this command, replace version number with one required)
5.a. gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315    (If it does not work then try below one, In my case below command worked)
5.b. gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)

완료 한 다음 계속 bundle install

참고 : 보석을 설치하는 동안 therubyracer 의 버전을 확인하는, libv8는 그것이 내가에 언급 된 것보다 diffrent 경우 설치 중입니다, 4 단계 후, 당신의 therubyracer, 그래서 하나의 일을, 설치되지 않을 수 있습니다 gem uninstall libv8반복 한 다음 단계-4변경 버전 , Rubyracer 를 설치하는 동안 콘솔에서 볼 수있는 것


1

이것은 나를 위해 일했습니다.

gem install libv8 -v '3.16.14.17' -- --with-system-v8
brew install v8-315
gem install therubyracer -v '0.12.3' --source 'http://rubygems.org/' -- --with-v8-dir='/usr/local/opt/v8@3.15'

마지막 명령의 출력 확인 brew --prefix v8-315그것이 내 경우를 /usr/local/opt/v8@3.15.


-2

문제가 발생했을 때

Gem::Ext::BuildError: ERROR: Failed to build gem native extension

그런 다음 빌드 필수를 설치해야합니다.

sudo apt install build-essential

그것은 mini_race의 설치 문제로 나를 위해 작동합니다.


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