ไม่สามารถติดตั้ง gem - ไม่สามารถสร้างส่วนขยายดั้งเดิมของ gem - ไม่สามารถโหลดไฟล์ดังกล่าว - mkmf (LoadError)


172

ทับทิม 1.9.3

ส่วนของ Gemfile

#...............
gem "pony"
gem "bcrypt-ruby", :require => "bcrypt"
gem "nokogiri" 
#..................

เมื่อฉันพยายามติดตั้งอัญมณีฉันได้รับข้อผิดพลาด

alex@ubuntu:~/$ bundle
Fetching gem metadata from http://rubygems.org/.........
Fetching gem metadata from http://rubygems.org/..
Enter your password to install the bundled RubyGems to your system: 
#####............................................................
Installing bcrypt-ruby (3.0.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb 
/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:36:in `<main>'


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

จากนั้นฉันก็ทำสิ่งนี้

sudo gem install bcrypt-ruby -v '3.0.1'
Building native extensions.  This could take a while...
ERROR:  Error installing bcrypt-ruby:
        ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/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:36:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out

และรับข้อผิดพลาดเช่นกัน

ฉันพลาดอะไร?


คำตอบ:


428

มีคำถามที่คล้ายกัน:

โดยปกติการแก้ปัญหาคือ:

sudo apt-get install ruby-dev

หรือหากไม่ได้ผลขึ้นอยู่กับรุ่นทับทิมของคุณให้เรียกใช้ดังนี้:

sudo apt-get install ruby1.9.1-dev

ควรแก้ไขปัญหาของคุณ


ยังไม่ทำงานใช่ไหม ลองทำสิ่งต่อไปนี้หลังจากติดตั้ง ruby-dev:

sudo apt-get install make


แต่ฉันมี 1.9.3 ทับทิมเท่านั้น
Alexandre

5
ruby 1.9.3 เป็นนามแฝงของ ruby ​​1.9.1

6
หลังจากติดตั้งruby1.9.1-devฉันยังsudo apt-get install makeต้อง ขอบคุณ!
wasatchwizard

6
หากคุณติดตั้งทับทิมด้วยคำสั่งsudo apt-get install ruby(โดยไม่ระบุรุ่น) คุณไม่จำเป็นต้องกังวลเกี่ยวกับรุ่นของคุณมากเกินไปหากคุณเพิ่งติดตั้งsudo apt-get install ruby-dev
kellins

7
ฉันพบว่าใน Ubuntu 16.04 คุณต้องการsudo apt-get install gcc make
Treur

13

สำหรับ WSL (Windows Subsystem สำหรับ Linux) คุณต้องติดตั้งbuild-essentialแพ็คเกจ:

sudo apt install build-essential

1
แก้ไขให้ฉันหลังจากที่ไม่มีคำแนะนำอื่น ๆ ที่ดูเหมือนจะทำ การตั้งค่าของฉัน: Win10 Pro + WSL กับ Ubuntu 18.04 + Ruby 2.5 ขอบคุณ!
cjs1978

1
สิ่งเดียวกันสำหรับ Ubuntu Server Hyper-V VM
Jorge Yanes Diez

1
ทำงานให้ฉันใน Ubuntu ภายใน Docker
Miguel Mota

สิ่งนี้ใช้ได้กับฉันในการติดตั้ง Ubuntu 18.04 LTS ปกติเมื่อพยายามติดตั้ง Typhoeus เอาทุกเพศทุกวัยเพื่อไปที่นั่นขอบคุณ!
RemakingEden

8

ฉันมีปัญหาเดียวกันกับที่พยายามติดตั้ง jquery-rails การแก้ไขคือ

sudo apt-get install zlibc zlib1g zlib1g-dev

1
เพียงแค่ติดตั้งzlib1g-devจะให้สิ่งที่คุณต้องการที่นี่หรืออย่างน้อยก็สำหรับฉัน
lindes

4

ฉันพบว่าฉันต้องติดตั้งทับทิมเวอร์ชันอื่น ดังนั้นการรันคำสั่ง

$ sudo apt-get install ruby1.9.1-dev

แล้วลองติดตั้งส่วนขยาย

หากคุณพบปัญหาที่มีการบอกคุณว่าคุณไม่มี g ++ คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง

$ sudo apt-get install g++

4

เพิ่งเสร็จสิ้นการไล่ล่าห่านป่า 2 ชั่วโมงพยายามแก้ปัญหานี้ คำตอบที่โพสต์ไม่ได้ผลสำหรับฉัน ฉันอยู่บน Mac (Mojave เวอร์ชั่น 10.14.6, Xcode เวอร์ชั่น 11.3)

ปรากฎว่าส่วนหัวไฟล์ทับทิมหายไปดังนั้นฉันจึงต้องเรียกใช้ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

ไม่ได้ผลสำหรับฉันในตอนแรกเพราะเวอร์ชันของ CommandLineTools ที่ฉันติดตั้งไว้ไม่มีโฟลเดอร์ "แพ็คเกจ" ดังนั้นฉันถอนการติดตั้งและติดตั้งใหม่เช่นนี้:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

จากนั้นฉันก็รันคำสั่งก่อนหน้าอีกครั้ง:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

หลังจากติดตั้งข้อผิดพลาดได้รับการแก้ไข!


สิ่งนี้ใช้ได้สำหรับฉัน ฉันใช้ macOS 10.14.6 (18G1012) Xcode 11.3
palmi

ขอบคุณ โซลูชันของคุณใช้ได้กับฉันเมื่อติดตั้ง "sudo gem install cocoapods" เพื่อการพัฒนาที่กระพือ
Venkataraman K

3

ในกรณีที่ทุกคนในอนาคตมีปัญหานี้ฉันใช้ Mac และเพิ่งต้องติดตั้งเครื่องมือบรรทัดคำสั่งโดยใช้ 'xcode-select - install'


1
สิ่งนี้ใช้ได้สำหรับฉัน ในกรณีของฉันฉันเกาหัวเพราะงานก่อสร้างของฉันทำงานได้ดีจนกระทั่งฉันอัพเกรดเป็น El Capitan
bruce1337

2
  1. ตรวจสอบให้แน่ใจว่าruby-devได้ติดตั้งแล้ว
  2. ตรวจสอบให้แน่ใจว่าmakeได้ติดตั้งแล้ว
  3. หากคุณยังคงได้รับข้อผิดพลาดให้ค้นหาแพ็คเกจที่แนะนำ หากคุณพยายามติดตั้งบางอย่างเช่นgem install pgคุณจะต้องติดตั้ง lib libpq-dev( sudo apt-get install libpq-dev)

1

นอกจากนี้ยังช่วยให้มั่นใจว่าติดตั้ง libmysqlclient-dev (Ubuntu 14.04)




0

หลังจากค้นหาคำตอบแล้วปรากฎว่าจำเป็นต้องใช้แพ็คเกจ -dev ไม่ใช่เพียง ruby1.8 ดังนั้นถ้าคุณมี ruby1.9.1 กำลังทำอยู่

sudo apt-get install ruby1.9.1-dev

หรือเพื่อติดตั้ง ruby ​​รุ่นทั่วไปให้ใช้ (ตามความคิดเห็น @lamplightdev):

sudo apt-get install ruby-dev

ควรแก้ไข

ลองหา mkmf เพื่อดูว่าไฟล์นั้นอยู่ที่นั่นหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.