ไม่สนใจ 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และนั่นก็แก้ไขได้

ที่บ้านไม่มีอะไรทำงาน

สิ่งที่ฉันได้ลองจากสามัญสำนึกและคำถาม Stack อื่น ๆ :

  • gem pristine GEM
  • gem pristine --all
  • การถอนการติดตั้งและติดตั้งอัญมณีใหม่
  • 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 ของคุณ Bundler คือผู้ที่จะสร้างส่วนขยาย นอกจากนี้ผลลัพธ์ของคุณยังแสดงรายการอัญมณีหลายเวอร์ชันดังนั้นคุณควรทราบว่านี่เป็นระบบที่กว้างสำหรับทับทิมรุ่นนั้น ๆ (หมายความว่าคุณจะมีอัญมณีหลายชิ้นที่จะสร้างใหม่)
Anthony

ฉันอยู่ในโฟลเดอร์บ้านไม่ใช่โครงการ Rails ดังนั้นจึงไม่มี Gemfile
Phillip Longman

เกิดปัญหาเดียวกันกับฉัน (ใช้ rvm) gem pristine --allไม่ทำงาน. แก้ไขได้โดยการลบอัญมณีทั้งหมดรวมถึงบันเดิลเลอร์ จากนั้นติดตั้งบันเดิลเลอร์gem install bundlerและในที่สุดก็นำทางกลับไปที่โปรเจ็กต์ของฉันและรันbundle installซึ่งติดตั้งอัญมณีทั้งหมดของฉันใหม่และทุกอย่างใช้งานได้
เดวิดวัตสัน

ในกรณีของฉันมันเกิดจากการขยายเป็นกลุ่ม ฉันใช้นามแฝง vim = "rvm use system do vim" เพื่อแก้ไขปัญหานี้ แต่ฉันเห็นคำเตือนเมื่อฉันออกจากกลุ่มดังนั้นหากคุณเห็นมันในสถานการณ์อื่นสิ่งนี้อาจใช้ไม่ได้
Brian Deterling

คำตอบ:


179

วันนี้ฉันเจอปัญหาที่แน่นอนนี้ - ได้รับคำเตือนเช่นนี้สำหรับอัญมณีที่ยังไม่ได้ติดตั้ง!

... ปรากฎว่ามีการติดตั้งอัญมณี- สำหรับทับทิมที่แตกต่างจากที่ฉันตั้งไว้ใช้งานกับ chruby (2.2.3 เทียบกับ 2.3.1)

การเปลี่ยนไปใช้ทับทิมที่แตกต่างกันทั้งหมดและทำงานgem pristine --allกับทับทิมทั้งหมดช่วยแก้ปัญหาได้


3
สิ่งนี้ใช้ได้ผลสำหรับฉันที่ทำสิ่งนี้กับทับทิมปัจจุบันเท่านั้น (ฉันใช้ rvm) อาจจะเป็นการป้องกันไม่ให้ใครบางคนทำการล้างข้อมูลมากเกินไป)
Sandro L

1
บางครั้งgem pristine --allจะทำไม่ดี ดูคำตอบนี้ใน Ask Different สำหรับข้อมูลเพิ่มเติม
GDP2

ถ้ามีปัญหาเกี่ยวกับสิทธิ์คุณควรตรวจสอบgem pristine --all และการวิ่งอาจช่วยได้which rubybrew link --overwrite ruby && source ~/.bash_profilegem 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

ติดตั้งใหม่

จากนั้นคุณมีโฮมไดเร็กทอรีที่สะอาดเพื่อใช้งาน ผมติดตั้งใหม่ rbenv กับวิธีการติดตั้งทับทิม 2.1.4 บน Ubuntu 14.04 และในที่สุดก็;

rbenv rehash

เพียงแค่ลบสิ่งที่เกี่ยวข้องกับ rvm แก้ไขปัญหานี้ให้ฉันใน macOS
neu242

6

ฉันทำทุกอย่างที่กล่าวมาข้างต้นรวมถึง

  • xcode-select - ติดตั้ง
  • ติดตั้งทับทิมใหม่
  • ติดตั้งอัญมณีทั้งหมดใหม่
  • อัญมณีที่บริสุทธิ์ - ทั้งหมด

แต่ปัญหาก็เหมือนกันสำหรับฉัน ฉันเพิ่งรีบูตเครื่อง Mac เป็นความหวังสุดท้ายและข้อความเตือนจะหายไป

แปลก แต่ถ้าใครกำลังดิ้นรนกับปัญหานี้หลังจากลองทุกอย่างใน StackOverflow แล้วให้ลองรีบูตเครื่องของคุณ


4
ขอบคุณที่แบ่งปันเคล็ดลับการรีบูต ฉันมีปัญหาเดียวกันบน Mac และสามารถแก้ไขได้เพียงแค่เริ่มเซสชันเทอร์มินัลใหม่
Libby

3

หากคุณติดตั้ง RVM อาจเป็นไปได้ว่าคุณพบข้อผิดพลาดเนื่องจากคุณได้ติดตั้งเวอร์ชันต่างๆ

ตรวจสอบและลบเวอร์ชันที่ไร้ประโยชน์ แต่ฉันคิดว่านี่ไม่ใช่แนวทางที่ดี ข้อผิดพลาดไปแล้ว

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

หลังจากรีเฟรช cocoapods ควรฉีดใน. rvm GEM_HOME

gem uninstall cocoapods
gem install cocoapods

อาจpod COMMANDจะทำให้เกิดข้อผิดพลาดเกี่ยวกับminitestอัญมณีดังนั้น -gem install minitest


2

TL; DR - อัญมณีทับทิมไม่ชอบทับทิมที่วิ่งจากซิมลิงค์หรือย้ายมาจากที่ที่พวกมันถูกสร้างขึ้น (เพราะฝังเพชร)

ถ้าไดเร็กทอรี Ruby ถูกเรียกหรือสภาพแวดล้อมชี้ไปที่ไดเร็กทอรี symlink'ed หรือถูกคัดลอกหรือเปลี่ยนชื่อข้อความนี้น่าจะเป็น ฉันใช้ chruby และใช้ symlinking /opt/rubies/-> /usr/local/ruby/แต่ตรรกะการค้นหาไลบรารีแบบไดนามิกของ Ruby ไม่เหมาะกับสิ่งนี้

วิธีแก้ปัญหาในกรณีของฉันคือแทนที่ symlink ด้วยทับทิมจริง/opt/rubies/และทำงานgem pristine --allในแต่ละ Ruby สำหรับคนอื่น ๆ ที่ใช้ RVM หรือ Rbenv ขอให้โชคดีโดยไม่ต้องเริ่มใหม่ตั้งแต่ต้น

นี่อาจไม่ใช่ปัญหาของคุณ แต่หวังว่าจะช่วยได้


1
มันกลายเป็นการทำงานgem pristine --allในส่วนของพวกเขาทั้งหมด ขอบคุณที่ทำให้คำถามที่ตายแล้วฟื้นคืนชีพ ฉันใกล้จะเผามันทั้งหมดแล้วเริ่มต้นใหม่
Phillip Longman

2

เพิ่มรสชาติของตัวเองที่นี่ ฉันใช้การrbenvติดตั้งผ่าน Homebrew และได้รับข้อความ "ละเว้น ... ไม่ได้สร้างส่วนขยาย" สี่รายการเหล่านี้ โดยเฉพาะ:

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
คุณกำลังพูดถึงระบบปฏิบัติการอะไร
rbanffy

rehashหรือhash -rสำหรับ bash เป็นคำสั่งเชลล์ที่มีอยู่ใน * nix เมื่อ C เชลล์เริ่มทำงานมันจะสร้างตารางแฮชของคำสั่งทั้งหมดในพา ธ : แต่ละชื่อคำสั่งและชื่อพา ธ สัมบูรณ์ ดังนั้นหลังจากที่คุณเริ่มการทำงาน csh หากมีการเพิ่มโปรแกรมใหม่ลงในไดเร็กทอรีตามเส้นทางคุณจะต้องใช้คำสั่ง rehash ของเชลล์เพื่อสร้างตารางแฮชใหม่ (cf: docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )
yacc

1

ฉันมีปัญหานี้ แต่เมื่อฉันเริ่มtmuxเซสชันโดยใช้tmuxinatorไฟล์.

เปิดออกมาก็เพราะฉันใช้tmuxinatorจากแทนการติดตั้งโดยใช้brew gem installบางทีการใช้งานchrubyในเวลาเดียวกันก็มีส่วนทำให้เกิดปัญหาเช่นกัน

p / s: ฉันเอาทับทิมที่ไม่ได้ใช้ออกไปด้วย~/.gem/rubyแต่ฉันสงสัยว่านั่นคือเหตุผลที่ปัญหานี้ได้รับการแก้ไขสำหรับฉัน


1

การวิ่งgem pristine --allไม่ได้ช่วยในตอนแรก แต่แล้วฉันก็รู้ว่า: สคริปต์ที่ฉันกำลังเรียกใช้เริ่มต้นด้วยบรรทัด:

#!/usr/bin/ruby

ในระบบ macOS ของฉัน (Catalina แต่ฉันไม่คิดว่ามันสำคัญ) สิ่งนี้ชี้ไปที่ Ruby ที่มาพร้อมกับระบบไม่ใช่ระบบที่ติดตั้งโดย RVM การรันgem pristine --allกำลังแก้ไขการติดตั้ง RVM แต่สคริปต์ของฉันเรียก Ruby เวอร์ชันอื่น

การแก้ไขสำหรับผมก็คือการใช้คำสั่งเพื่อโทรแล้วแต่จำนวนใดทับทิมระบุไว้ในของเปลือกปัจจุบันenv PATHการเปลี่ยนบรรทัดบนสุดของสคริปต์เป็นการแก้ไข:

#!/usr/bin/env ruby


เพิ่งเกิดขึ้นกับฉัน - ขอบคุณ! หมายความว่าได้bundle installติดตั้งอัญมณี (และส่วนขยายดั้งเดิม) สำหรับทับทิมที่เลือกผ่านตัวสลับ RVM Ruby ซึ่งสคริปต์ที่อ้างถึงระบบ Ruby ไม่สามารถค้นหาได้ วิธีแก้ปัญหาของคุณเป็นแนวทางปฏิบัติมาตรฐานในการทำให้สคริปต์และอัญมณี Ruby ทำงานร่วมกับทับทิมที่ผู้ใช้ติดตั้งไว้ ( ดู )
tanius

สิ่งนี้ทำให้ฉันมาถูกทาง! ในกรณีของฉันฉันต้องการให้ tmuxinator เป็น util (ไม่ใช่ dep ที่รวมมาสำหรับโปรเจ็กต์เฉพาะ) ดังนั้นฉันจึงติดตั้งบน Ubuntu ดังนั้นการทำapt purge tmuxinatorแล้วgem install tmuxinatorทำให้มันได้ผล ฉันอาจจะต้องติดตั้งอัญมณีทุกครั้งที่อัปเกรดทับทิมเวอร์ชันที่ไม่ใช่โปรเจ็กต์ แต่ฉันชอบสิ่งนี้ดีกว่า ขอบคุณ!
เขาวงกต

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

ดังนั้นตรวจสอบว่าคุณไม่ได้ตั้งค่า GEM_PATH และ GEM_HOME ใน ~ / .zshrc


0

ถอนการติดตั้งและติดตั้ง Vagrant ใหม่ก็ใช้ได้เช่นกัน มีunistall.toolสคริปต์ทุบตีรวมอยู่ในอิมเมจ. dmg ของโปรแกรมติดตั้งที่จะลบ Vagrant

พบโซลูชันนี้ที่นี่: การอัปเดต Vagrant และ Gems Extentions ที่ไม่ได้ติดตั้งในตัว


0

ฉันมีปัญหาเดียวกันและฉันใช้ rbenv ด้วยเหตุผลบางประการการตั้งค่า rbenv ส่วนกลางของฉันหายไป ในการแก้ไขปัญหานี้ฉันตั้งค่าเวอร์ชันส่วนกลางเป็นเวอร์ชัน rbenv ของฉัน ... ตัวอย่างเช่น:

rbenv global 2.5.1


0

นี่เป็นปัญหาเช่นกันเมื่อคุณพัฒนาบน Mac จากนั้นสร้างอิมเมจ Docker: https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0

เมื่อคุณทำการ "Bundle install --deployment" บันเดิลเลอร์จะสร้างไดเร็กทอรีผู้ขายที่มีอัญมณีของคุณอยู่ โปรดทราบว่าแม้ว่าจะรวมอัญมณีของคุณไว้ในโฟลเดอร์ภายในเครื่อง แต่จะรวมเฉพาะส่วนขยายดั้งเดิมสำหรับแพลตฟอร์มของคุณเท่านั้น เมื่อคุณใช้ macOS สิ่งนี้จะเป็นดาร์วิน คุณจะต้องทำซ้ำขั้นตอนบนสภาพแวดล้อมลินุกซ์ 64 บิต x86


0

คำแนะนำของลิบบี้ในการเริ่มเซสชันเทอร์มินัลใหม่ (ซึ่งเธอแสดงความคิดเห็นเกี่ยวกับคำตอบของเซบาสเตียนคิม) ได้ผลสำหรับฉัน เร็วกว่าข้ออื่น ๆ มากเช่นกันดังนั้นฉันจึงต้องการให้คำตอบเพื่อให้มองเห็นได้ชัดเจนขึ้น


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.