확장 기능이 빌드되지 않았기 때문에 GEM 무시


133

직장 컴퓨터와 가정용 컴퓨터에서 최근에을 사용하여 Ruby를 2.3.1로 업그레이드했습니다 ruby-install. 내가 사용하는 chruby내 루비 스위처로.

터미널에서이 경고가 표시되기 시작했습니다.

Ignoring bcrypt-3.1.11 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built.  Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built.  Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built.  Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built.  Try: gem pristine concurrent-ruby-ext --version 1.0.2
Ignoring debug_inspector-0.0.2 because its extensions are not built.  Try: gem pristine debug_inspector --version 0.0.2

내 작업, 컴퓨터에서 목록이 훨씬 길었지만 쉽게 해결할 수있었습니다. 내가 제안을 시도했을 때 gem pristine GEM보석을 찾을 수 없다고 말 했으므로을 실행 gem install GEM하여 해결했습니다.

집에서는 아무것도 작동하지 않습니다.

상식 및 기타 다양한 스택 질문에서 시도한 것 :

  • gem pristine GEM
  • gem pristine --all
  • gem 제거 및 재설치
  • gem update
  • gem update --system
  • bundle update
  • 제거 및 재설치 bundler
  • 제거 및 재설치 rails(단, Rails 관련 문제는 아닙니다.)
  • 삭제 ~/.bundle/
  • 개방 XCode하고 일부 확장을 설치셔서는 (그것을 할 필요가 않았다,하지만 수정 아무것도하지 않았다.)
  • 실행 brew doctor후, 모든 사소한 문제를 해결 brew update하고brew upgrade
  • gem install curb (이 보석 이이 문제와 어떤 관련이 있는지 상상할 수 없지만 두 명의 다른 사람들 이이 문제를 동일한 경고에 대한 수정의 마지막 단계로 나열했습니다.)

1
보석이 설치되어 있지 않은 경우에도 동일한 경고가 표시됩니다. 나는 제거 bcrypt했지만 여전히 그것에 대해 두 가지 경고를 주었다.
Phillip Longman

1
번 들러를 업데이트 했습니까? 제거 및 재설치는 Gemfile.lock에있는 모든 것을 사용합니다. 번 들러는 확장을 빌드 할 사람입니다. 또한 출력에는 여러 버전의 gem이 나열되어 있으므로 해당 버전의 루비에 대해 시스템 전체에 해당한다는 것을 알아야합니다 (다시 빌드 할 보석이 여러 개 있음).
Anthony

Rails 프로젝트가 아닌 내 홈 폴더에 있었기 때문에 Gemfile이 없었습니다.
Phillip Longman

rvm을 사용하여 동일한 문제가 발생했습니다. gem pristine --all작동하지 않았다. 번 들러를 포함한 모든 gem을 삭제하여 해결했습니다. 그런 다음 번 들러를 설치 gem install bundler하고 마침내 내 프로젝트로 이동하여 bundle install모든 보석을 다시 설치 하고 실행 했습니다
David Watson

제 경우에는 vim 확장으로 인해 발생했습니다. 별명 vim = "rvm use system do vim"으로 해결했습니다. 그러나 vim을 종료했을 때만 경고를 보았으므로 다른 상황에서 경고가 표시되면 적용되지 않을 것입니다.
Brian Deterling

답변:


179

나는 오늘이 정확한 문제를 발견했습니다-심지어 설치되지 않은 보석에 대해 이와 같은 경고가 나타납니다!

... 보석 설치되어 있는 것으로 나타났습니다. chruby로 활성화 한 것과 다른 루비 (2.2.3 대 2.3.1).

모든 다른 루비로 전환하고 모든 루비로 실행 gem pristine --all하면 문제가 해결되었습니다.


3
이것은 현재 루비에서만이 작업을 수행하는 데 효과적이었습니다 (rvm 사용). 어쩌면이 너무 많이 정리를하고 누군가를 방지)
산드로 L

1
때로는 gem pristine --all좋지 않습니다. 자세한 내용 은 Ask Different 에서이 답변 을 참조하십시오 .
GDP2

gem pristine --all권한 문제가있는 경우 확인해야합니다 which ruby. brew link --overwrite ruby && source ~/.bash_profile및 실행 gem pristine --all도움이 될 수 있습니다
Chris Yim

그 해결책 중 어느 것도 나를 위해 일하지 않으며 동일한 문제가 있습니다.
Alex Cohen

19

나는이 문제에 부딪 쳤고 이전에 설치된 Ruby 버전을 모두 제거하기까지 위와 동일한 명령을 모두 따랐습니다. 그러나 오류가 지속되었습니다.

에서 (이전에 제거 된) 다양한 버전에 대한 남은 보석이 있음이 밝혀졌습니다 ~/.gem/ruby/. 더 이상 사용하지 않은 폴더를 제거한 후 오류가 사라졌습니다.


2
이것은 나를 위해 그것을했다. rm -rf. 나는 이전에 모든 보석을 깨끗하게 설치하려고 시도했지만 아무 소용이 없습니다.
StevenNunez

10

오늘도이 문제가 있었고 전체 편집기가 오류 메시지와 함께 빨간색으로 깜박이기 때문에 입력 할 수 없기 때문에 좌절했습니다.

나는 그것이 정확히 무엇이 원인인지 완전히 확신하지 못하지만 여러 루비 버전이나 여러 루비 버전 관리자가 설치되어 있고 서로 겹쳐 쓰기 때문에 보석을 향한 길을 엉망으로 만들기 때문 이라고 생각합니다 .

gem당신이 rbenv와 RVM이있을 때 명령은 덮어 쓰기 가져옵니다.

입력하여 설치 한 것을 확인하십시오.

which rvm
which rbenv
which chruby

그중 하나가 설치되면 경로를 반환합니다. 그런 다음 삭제하고 모든 디렉토리를 완전히 정리하고 새로 설치로 시작하십시오.


없애다

다음은 rvm에서 수행 한 작업입니다 .

rvm implode
gem uninstall rvm
rm -rf ~/.rvm
rm -rf ~/.rvmrc

여기 rbenv에 대해 한 일이 있습니다.

먼저 https://github.com/meowsus/rbenv-clean을 설치 한 다음

rbenv clean
sudo apt-get remove rbenv
rm -rf ~/.rbenv

다시 설치

그런 다음 깨끗한 홈 디렉토리가 있습니다. 우분투 14.04에 루비 2.1.4를 설치하는 방법으로 rbenv를 언급했습니다 . 그리고 마지막으로;

rbenv rehash

rvm 관련 항목을 제거하면 macOS에서이 문제가 해결되었습니다.
neu242

6

나는 위에서 언급 한 모든 것을 포함하여

  • xcode-select --install
  • 루비를 다시 설치
  • 모든 보석을 다시 설치
  • 보석 깨끗한-모두

그러나 문제는 나에게 동일했습니다. 마지막 희망으로 Mac을 재부팅했는데 경고 메시지가 사라졌습니다.

이상하지만 StackOverflow에서 모든 것을 시도한 후에이 문제로 어려움을 겪고 있다면 컴퓨터를 재부팅하십시오.


4
재부팅 팁을 공유해 주셔서 감사합니다. 나는 Mac에서도 같은 문제가 있었고 새로운 터미널 세션을 시작하는 것만으로 해결할 수있었습니다.
Libby

3

RVM을 설치 한 경우 다른 버전을 설치했기 때문에 오류가 발생했을 수 있습니다.

쓸모없는 버전을 확인하고 제거하지만 이것이 좋은 접근 방법 이 아니라고 생각합니다 . 어쨌든 오류가 사라졌습니다.

rvm list
rvm use ruby-version
rvm remove ruby-useless-version

Cocoapod를 새로 고친 후 .rvm GEM_HOME에 주입해야합니다.

gem uninstall cocoapods
gem install cocoapods

아마도 보석에 pod COMMAND대한 오류를 던질 것 입니다.minitestgem install minitest


2

TL; DR-루비 젬은 루비 보석이 심볼릭 링크에서 실행되거나 빌드 된 위치에서 이동하는 루비를 좋아하지 않습니다 (내장 된 셰방 때문에)

Ruby 디렉토리가 호출되거나 환경 변수가 심볼릭 링크 된 디렉토리를 가리 키거나 복사되거나 이름이 바뀌면이 메시지가 나타납니다. 나는 chruby를 사용하고 있으며 symlinking- /opt/rubies/> /usr/local/ruby/이지만 Ruby의 동적 라이브러리 찾기 논리는 이것과 잘 어울리지 않습니다.

필자의 경우 해결책은 심볼릭 링크를 실제 루비로 바꾸고 각 루비에서 /opt/rubies/실행 하는 것이 었습니다 gem pristine --all. RVM 또는 Rbenv를 사용하는 다른 사람들에게는 처음부터 다시 시작하지 않고 행운을 빕니다.

이것은 당신의 정확한 문제는 아니지만 희망적으로 도움이 될 것입니다.


1
그것은 gem pristine --all그들 모두 에서 달리는 것으로 판명되었습니다 . 이 죽은 질문을 부활시켜 주셔서 감사합니다. 나는 그것을 완전히 태우고 다시 시작하는 것에 가까웠다.
Phillip Longman

2

내 취향을 여기에 추가하십시오. 내가 사용 rbenv브루을 통해 설치 메시지를 이러한 "지어지지 무시 ... 확장"네 얻고 있었다. 구체적으로 특별히:

Ignoring bcrypt-3.1.12 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.12
Ignoring bindex-0.5.0 because its extensions are not built.  Try: gem pristine bindex --version 0.5.0
Ignoring bootsnap-1.3.2 because its extensions are not built.  Try: gem pristine bootsnap --version 1.3.2
Ignoring byebug-10.0.2 because its extensions are not built.  Try: gem pristine byebug --version 10.0.2

나는이 스레드에서 많은 일을 운없이 시도했습니다. 마침내 내 경우에는

  • brew uninstall rbenv
  • rm -rf ~/.rbenv
  • brew install rbenv

이 시점에서 여전히 오류가 발생했지만 이제는 단일 Ruby 버전 만 사용했습니다.

$ rbenv versions
* system (set by /Users/will/.rbenv/version)

이 시점 sudo gem pristine --all에서 시스템 Gems 디렉토리에 대한 권한이 시도 되었지만 거부되었습니다.

그래서 나는 각 보석에 대해 깨끗하게 달렸습니다.

sudo gem pristine bcrypt --version 3.1.12 (기타)

그리고 마침내 오류가 사라졌습니다.


1

이것은 오래된 스레드이지만 방금이 문제를 겪었습니다.

컴퓨터를 다시 시작할 필요가 없으며 환경을 새로 고치기 만하면됩니다. rehash 명령으로이를 수행 할 수 있습니다.

rehash

매뉴얼 페이지에서 : rehash command re-computes the internal hash table of the contents of directories listed in the path environmental variable to account for new commands added.


1
무슨 OS에 대해 이야기하고 있습니까?
rbanffy 2016 년

rehash또는 hash -rbash의 경우 * nix에서 사용 가능한 쉘 명령입니다. C 쉘은 시작될 때 경로에있는 모든 명령의 해시 테이블 (각 명령 이름과 절대 경로 이름)을 빌드합니다. 따라서 csh 실행을 시작한 후 경로를 따라 디렉토리에 새 프로그램이 추가되면 셸의 rehash 명령을 사용하여 해시 테이블을 다시 작성해야합니다. (cf : docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )
yacc

1

이 문제가 있었지만를 tmux사용하여 세션을 시작할 때만 발생했습니다 tmuxinator.

를 사용하여 설치하는 대신 사용 tmuxinator하고 있기 때문에 밝혀졌습니다 . 어쩌면 동시에 사용 하면 문제에 기여했을 수도 있습니다.brewgem installchruby

p / s : 사용하지 않은 루비도 제거 ~/.gem/ruby했지만이 문제가 나를 위해 해결 된 이유는 의심 스럽습니다.


1

러닝 gem pristine --all은 처음에는 도움이되지 않았지만, 내가 실행중인 스크립트는 다음 줄로 시작했습니다.

#!/usr/bin/ruby

내 macOS 시스템 (Catalina, 중요하지 않다고 생각)에서 이것은 RVM이 설치 한 시스템이 아니라 시스템과 함께 제공된 Ruby를 가리 킵니다. 실행 gem pristine --all중 RVM 설치를 수정했지만 스크립트에서 다른 버전의 Ruby를 호출했습니다.

나를위한 해결책은 env명령 을 사용 하여 현재 쉘에 지정된 루비를 호출 하는 것이 었습니다 PATH. 스크립트의 맨 위 줄을 다음과 같이 수정했습니다.

#!/usr/bin/env ruby


방금 나에게 일어난 – 감사합니다! 이는 bundle installRVM Ruby 스위처를 통해 선택된 루비에 대한 gem (및 기본 확장)을 설치 했음을 의미합니다 . 여기서 Ruby 시스템을 참조하는 스크립트는이를 찾을 수 없습니다. 귀하의 솔루션은 Ruby 스크립트 및 gem이 사용자가 설치 한 루비와 함께 작동하도록하는 표준 사례입니다 ( 참조 ).
tanius

이것은 나를 올바른 길로 안내했다! 필자의 경우, tmuxinator가 유틸리티 (특정 프로젝트의 번들 뎁이 아님)가되기를 원했기 때문에 우분투에 설치했습니다. 그래서 일을 apt purge tmuxinator하고 gem install tmuxinator그것은 작동했다. 프로젝트가 아닌 루비 버전을 업그레이드 할 때마다 gem을 설치해야 할 수도 있지만이 방법이 더 좋습니다. 감사!
미로

1

Mac OS Catalina, brew 및 rbenv 실행 중 ...

오늘이 정확한 문제를 겪고 여기에있는 모든 대답을 살펴본 결과 결국이 오류의 또 다른 이유를 발견했습니다.

Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7

물론 보석 그대로는 작동하지 않았습니다.

내 문제는 하드 코딩 된 GEM_HOME 및 GEM_PATH 환경 변수로 rbenv를 재정의했습니다.

~ / .zshrc에 GEM_PATH 및 GEM_HOME을 설정하지 않았는지 확인하십시오.



0

나는 같은 문제가 있었고 rbenv를 사용하고 있습니다. 어떤 이유로 내 글로벌 rbenv 설정이 누락되었습니다. 이 문제를 해결하기 위해 글로벌 버전을 rbenv 버전 중 하나로 설정했습니다.

rbenv 글로벌 2.5.1


0

Mac에서 개발하고 Docker 이미지를 빌드 할 때도 문제가됩니다. https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0

"번들 설치-배포"를 수행 할 때, 번 들러는 gem이 포함 된 벤더 디렉토리를 생성합니다. 여기에는 로컬 폴더에 gem이 포함되어 있지만 플랫폼의 기본 확장명 만 포함됩니다. macOS를 사용하면 Darwin이됩니다. 64 비트 x86 Linux 환경에서 프로세스를 반복해야합니다.


0

새로운 터미널 세션을 시작 하겠다는 Libby의 제안 (Sebastian Kim의 답변에 대해 언급 한)이 저에게 효과적이었습니다. 다른 것보다 훨씬 빠르므로 더 잘 보이도록 대답하고 싶었습니다.


0

제 경우에는 달리려고 pristine --all했지만 다음과 같은 결과가 나타났습니다.

Ignoring ffi-1.11.1 because its extensions are not built.  Try: gem pristine ffi --version 1.11.1
Ignoring jaro_winkler-1.5.3 because its extensions are not built.  Try: gem pristine jaro_winkler --version 1.5.3
Ignoring psych-3.1.0 because its extensions are not built.  Try: gem pristine psych --version 3.1.0
/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': incompatible library version - /.gem/gems/psych-3.1.0/lib/psych.bundle (fatal) 

그런 다음 Users/{{user.name}}⁩/⁨.gem⁩실행해야 할 때 내용을 삭제하고 bundle install --force모든 것을 다시 설치 한 다음 명령 pristine --all이 예상대로 작동했습니다.


0

이 솔루션은 RubyMine IntelliJ 에서 효과적이었습니다.

나는 두 개의 서로 다른 단말기가 사용하고 있었다 RVMruby<Version>.

해결책:

오류를 없애기 위해 RVM 버전으로 전환해야했습니다. Preferences>Languages&Frameworks>Ruby SDK

오류 :

Ignoring executable-hooks-1.6.0 because its extensions are not built. Try: gem pristine executable-hooks --version 1.6.0 rubymine

Ignoring gem-wrappers-1.4.0 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.4.0

여기에 이미지 설명을 입력하십시오

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