2012-09-03 1 views
2

번들을 사용하여 gemfiles를 관리하고 있으므로 RVM을 rbenv로 교체하려고합니다. rbenv는 내 Ruby 버전 관리에서 훨씬 가볍기 때문에 RVM을 제거하고 rbenv를 설치했습니다.RVM을 rbenv로 교체 --mkmf 오류

gem install bundler 

을 사용하여 bundler 보석을 설치했습니다. 모든 곳에서 필요하기 때문입니다. 그럼 프로젝트를 열고 rbenv 사용하여 필요한 버전의 루비를 설치 :

rbenv install 1.9.3-p194 
rbenv local 1.9.3-p194 
rbenv rehash 

나는 확실히 그것을 루비의 오른쪽 버전을 사용했다 할 ruby -v을 입력을하고 있었다, 그래서 나는 번들을 실행 시도하고 할 때까지 실행 실패 후 RedCloth과를 설치하려고하고 :

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

    /usr/bin/ruby1.9.1 extconf.rb --with-cflags=-w 
    /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError) 
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from extconf.rb:1:in `<main>' 

그것은 내가 번들 전에 RedCoth를 설치할 것을 제안, 그래서 RedCloth 설치 :

gem install RedCloth 

어 성공했다. 나는 그 다음, 그냥 여전히 바로 확인하고, ruby -v를 실행 bundle update를 실행 시도하고 같은 오류가 발생했습니다 :

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

    /usr/bin/ruby1.9.1 extconf.rb --with-cflags=-w 
    /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError) 
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from extconf.rb:1:in `<main>' 

    Gem files will remain installed in /home/ruberto/.bundler/tmp/7551/gems/RedCloth-4.2.9 for inspection. 
    Results logged to /home/ruberto/.bundler/tmp/7551/gems/RedCloth-4.2.9/ext/redcloth_scan/gem_make.out 
    An error occurred while installing RedCloth (4.2.9), and Bundler cannot continue. 
    Make sure that `gem install RedCloth -v '4.2.9'` succeeds before bundling. 

그때 루비의 다른 버전을 설치하려고했지만 하나가 더 성공이 없었다.

아이디어가 있습니까?

나는 이후에 다른 프로젝트에서 같은 일을 시도하고 모두 잘 작동하는 것. 1.8.7을 사용하는 버전이 있으며 rbenv를 올바른 버전으로 설정 한 다음 번들을 실행하는 것만 큼 쉽습니다. 거의 모든 Ruby 버전 조합을 시도했지만 아직 작동하지 않습니다.

답변

0

결국 문제가 해결되었습니다.

잘못된 버전의 Ruby 1.8.7-p370을 설치했습니다. 그런 다음 번들을 실행했는데 번들이 1.9.3 패키지 일 때 루비 1.8.7에 대한 네이티브 확장을 컴파일하는 보석이 있었기 때문에 1.9.3 버전으로 전환하여 번들을 다시 실행하려고 시도해도 폭탄을 터뜨렸다.

이 문제를 해결하려면 모든 보석을 제거한 다음 올바른 버전의 Ruby를 설치하고 번들을 다시 실행하십시오.

+0

보석을 삭제하고 다시 설치하는 대신'gem pristine --all'을 사용했을 수 있습니다. 보통 Ruby 버전을 업데이트 할 때 컴파일 문제로 인한 문제를 수정합니다. 그러나 rbenv가 작동하는 방식은 설치된 Ruby 버전마다 별도의 보석 설치가 있어야하며, Ruby를 설치 한 후'bundle install '으로 수정해야합니다. –

0

비슷한 문제가있었습니다. 그것은 내 경로 앞에 ~/.rbenv/shims 디렉토리가 있어도 zsh가 번들의 위치를 ​​/ usr/local/bin/bundle에 캐싱하고 있음이 밝혀졌습니다.

해결 방법은 단순히 쉘에서 rehash (rbenv rehash 아님)을 실행하는 것입니다. 이것은 번들을 포함하여 모든 캐시 된 명령을 플러시했으며, 그 후에 모두 잘 수행되었습니다.