ติดตั้ง gem: ไม่สามารถสร้างส่วนขยายดั้งเดิมของ gem (ไม่พบไฟล์ส่วนหัว)


356

ฉันใช้ Fedora 14 และฉันติดตั้งและใช้งานเซิร์ฟเวอร์ MySQL และ MySQL 5.1.42 อยู่ ตอนนี้ฉันพยายามทำสิ่งนี้ในฐานะผู้ใช้รูท:

gem install mysql

แต่ฉันได้รับข้อผิดพลาดนี้:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

เกิดอะไรขึ้นที่นี่? ในทับทิมที่ติดตั้ง 1.8.7 และ rubygems ล่าสุด 1.3.7


เพียงแค่เดาด่วน: คุณมีส่วนหัวของไฟล์ dev สำหรับ MySQL หรือไม่
DrColossos

ฉันจะรับไฟล์ dev เหล่านี้ได้อย่างไร
ทิม

1
ฉันทำมันใน Ubuntu ทำสิ่งต่อไปนี้: apt-get install ruby-dev rubygems gem ติดตั้ง mysql - ด้วย-mysql-config = / usr / bin / mysql_config ทำงานได้ดี
Ivan Carrasco Quiroz

คำตอบ:


757

สำหรับผู้ที่อาจสับสนโดยคำตอบที่ยอมรับเช่นเดียวกับคุณคุณต้องติดตั้งส่วนหัวทับทิม [ ruby-devel ]

บทความที่บันทึกไว้ซ่อนของฉันคือที่นี่

และนี่คือทางออกที่แก้ไขแล้ว (โปรดทราบว่าฉันใช้ Fedora 13):

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

สำหรับเดเบียนและดิสทริบิวชันอื่น ๆ ที่ใช้บรรจุภัณฑ์สไตล์เดเบียนหัวการพัฒนาทับทิมจะถูกติดตั้งโดย:

sudo apt-get install ruby-dev

สำหรับ Ubuntu ส่วนหัวการพัฒนาทับทิมติดตั้งโดย:

sudo apt-get install ruby-all-dev

หากคุณใช้ทับทิมรุ่นก่อนหน้า (เช่น 2.2) คุณจะต้องเรียกใช้:

sudo apt-get install ruby2.2-dev

(โดยที่ 2.2 เป็นรุ่นทับทิมที่คุณต้องการ)


@NoBugs ขอบคุณสำหรับข้อมูลเพิ่มเติม :)
Brian Lacy

1
สิ่งนี้ทำงานได้เมื่อฉันมีปัญหาในการพยายามสร้างแอปโดยใช้ ruby ​​บนราง มันบ่นเกี่ยวกับวิธีการติดตั้ง json และ Bundler ไม่สามารถดำเนินการต่อได้ ทำงานติดตั้ง ruby-devel
แจ็ค

2
นอกจาก ruby-dev โพสต์โดย @NoBugs ด้านบนฉันยังต้องการ libmysqlcient-dev บน Ubuntu (12.04) (หรือดูคำตอบ Debian / Ubuntu โดย Damian Nowak ด้านล่าง)
Jon Garvin

1
ทำงานให้ฉันใน RHEL6 เมื่อฉันมีปัญหาในการติดตั้ง jekyll
เดวิดเมสัน

สิ่งนี้ช่วยให้ฉันติดตั้ง fpm อาจช่วยติดตั้งซอฟต์แวร์ที่ใช้ทับทิม yum -y install gcc ruby-devel rubygemsผมใช้
Zoltán

91

Red Hat, Fedora:

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

Debian, Ubuntu:

apt-get install libmysqlclient-dev ruby-dev
gem install mysql

Arch Linux:

pacman -S libmariadbclient
gem install mysql

อันนี้หรือเปล่า mysql-devel.i686: ไฟล์สำหรับการพัฒนาแอพพลิเคชั่น MySQL
ทิม

1
แน่นอนว่าต้องใช้ mysql-devel คำถามคือสิ่งที่จำเป็นนอกเหนือจาก อาจลองวิธีนี้: fedora-tunisia.org/?q=node/44 แจ้งให้เราทราบหากใช้งานได้
Nowaker

ฉันเพิ่งพบปัญหานี้ที่นี่: stackoverflow.com/questions/6297751/…ทางออกที่ดี!
Kevin Brown

สิ่งที่คุณพูดจำเป็นต้องใช้ แต่เป็น ruby-devel ที่จำเป็นในการแก้ไขข้อผิดพลาดที่เป็นปัญหา
Edward Anderson

BTW ในระบบ RedHat ruby-develคือ
texasbruce

50

สำหรับทุกคนที่อ่านสิ่งนี้ในปี 2558: หากคุณบังเอิญติดตั้งแพ็คเกจruby2.0คุณต้องติดตั้งการจับคู่ruby2.0-devเพื่อรับส่วนหัว Ruby ที่เหมาะสม เช่นเดียวกับruby2.1และruby2.2อื่น ๆ ตัวอย่างเช่น:

$ sudo apt-get install ruby2.2-dev

ใน fedora 22:sudo dnf install ruby-devel
Geoffrey De Smet

ขอบคุณ! ทับทิมบางครั้งก็แปลก
nelsonenzo

เช่นเดียวกับทับทิม 2.3
Charles Roper

24

ดูเหมือนว่า

yum install ruby-devel

ก็เพียงพอแล้วสำหรับฉันที่จะแสดง

gem install datamapper

ภายหลัง

เป็นไปได้ว่าคุณจะต้องติดตั้งแพ็คเกจอื่น:

yum install gcc gcc-c++

เพื่อให้สามารถสร้างส่วนขยายเนทิฟ


1
ฉันได้รับข้อผิดพลาดที่แปลกมากโดยไม่มีข้อความที่ชัดเจนและเป็นเพราะแพ็คเกจ gcc ไม่ได้ถูกติดตั้ง :( โพสต์นี้ทำให้ฉันจำขั้นตอนพื้นฐานนี้ได้; P
BrunoJCM

9

ผู้ใช้ MAC อาจประสบปัญหานี้เมื่อติดตั้งเครื่องมือ xcode ไม่ถูกต้อง ด้านล่างเป็นคำสั่งเพื่อกำจัดปัญหา

xcode-select --install

ใช่นั่นเป็นปัญหา ขอบคุณมาก!
Eduard Ghinea

แล้วsudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00

8

ผมพบว่าวิธีการแก้ปัญหาที่นี่

# yum install mysql-devel gcc make
# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config

8

โพสต์นี้ช่วยฉัน ขอบคุณมาก.

บน Linux (Ubuntu 12.10) ฉันจำเป็นต้องเรียกใช้

sudo apt-get install ruby
sudo apt-get install rubygems
sudo apt-get install ruby-dev

ก่อนที่ฉันจะวิ่งได้สำเร็จ

sudo gem install jekyll

4

หากคุณติดตั้ง gem และ ruby ​​และไม่สามารถติดตั้ง rails ได้ให้ติดตั้ง ruby ​​dev lib

sudo apt-get install ruby-dev

มันใช้งานได้สำหรับฉัน ฉันลองใช้วิธีอื่นแล้ว


ฉันมี Ubuntu 16.04LTS ฉันคิดว่าจะเหมือนกันสำหรับรุ่นก่อนหน้าอื่น ๆ
Hafiz Shehbaz Ali


2

สำหรับผู้ที่ยังประสบปัญหาเช่นฉัน (ฉันใช้ Ubuntu 16.04) ฉันต้องใส่คำสั่งต่อไปนี้เพื่อรับอัญมณีบางอย่างเช่น bcrypt, pg และอื่น ๆ ที่ติดตั้ง พวกเขาทั้งหมดคล้ายกับที่กล่าวข้างต้นยกเว้นหนึ่ง

sudo apt-get install ruby-dev -y
sudo apt-get install libpq-dev -y
sudo apt-get install libmysqlclient-dev
sudo apt-get install build-essential patch -y

สิ่งนี้ทำให้ฉันสามารถติดตั้งอัญมณีเช่น PG, bcrypt และ recaptcha


1

วิธีการแก้ปัญหาเบื้องต้นของฉันคือการแก้ไขข้อผิดพลาดดังกล่าวข้างต้นโดยการติดตั้งruby-devel, และpatchrubygems

ปัญหาของฉันแตกต่างไปเล็กน้อยเนื่องจากbcrypt 3.1.11ยังคงมีปัญหาในการรวบรวมและติดตั้งบน Fedora 23 ฉันต้องการแพ็คเกจเพิ่มเติม ดังนั้นหลังจากตรวจสอบให้แน่ใจว่าฉันได้ติดตั้งข้างต้นแล้วฉันยังคงมีปัญหา:

gcc: error: conftest.c: No such file or directory

gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory

จากที่นี่ฉันต้องทำสิ่งต่อไปนี้:

  • ฉันมั่นใจว่าฉันไม่ได้ขาดเครื่องมือคอมไพเลอร์ C ใด ๆ sudo dnf group install "C Development Tools and Libraries"

  • จากนั้นฉันก็วิ่งsudo dnf install redhat-rpm-configไปแก้ไขปัญหา gcc ตามรายการด้านบน

คุณสามารถค้นหาเขียนขึ้นที่นี่ในโครงการ Fedore คุณอาจพบคำตอบสำหรับความต้องการอื่น ๆ เช่นกัน



1

คุณต้องติดตั้งแพ็คเกจต่อไปนี้:

  • ทับทิม dev

  • GCC

  • libffi-dev

  • แต่งหน้า

นี่คือคำสั่งสำหรับเดเบียน distro:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 





-1

เพียงแค่เพิ่มเส้นทางไปยังไฟล์ ruby.h ใน PATH ของฉัน
ตัวอย่าง:

ส่งออก PATH = $ PATH: / usr / src / ruby-xxxxxx

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