Untuk konteks, itu pada server jauh yang memiliki firewall. Saya menyiapkan lingkungan saya melalui proxy. Saya punya ruby 1.8.7
. Ketika saya mencoba menginstal permata ..
sudo gem install --http-proxy <host address>:<port> json
Saya mendapatkan kesalahan berikut:
Building native extensions. This could take a while...
ERROR: Error installing json:
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/lib64/ruby/gems/1.8/gems/json-1.8.1 for inspection.
Results logged to /usr/lib64/ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
Karena saya tidak yakin apa masalahnya, saya mencari di Google dan menemukan ini
instal permata: Gagal membangun ekstensi asli permata (tidak dapat menemukan file header) - petunjuk di sini tampaknya khusus untuk permata yang sedang diinstal.
Bagaimana cara menginstal json gem - Gagal membangun ekstensi asli permata Ini sepertinya kesalahan yang sedikit berbeda.
Ada petunjuk? Terima kasih!
/usr/lib/ruby/ruby.h
file, jika ada, tunjukkan kepada kami pesan kesalahan darigem_make.out
.Jawaban:
Pembaruan era modern, sebagaimana dinyatakan oleh mimoralea :
atau, cara umum:
Tautan pertama yang Anda poskan persis dengan kasus Anda: tidak ada lingkungan pengembangan ruby yang diinstal. Pengembangan diperlukan untuk mengkompilasi ekstensi ruby, yang sebagian besar ditulis dalam bahasa
C
. Proxy tidak ada hubungannya dengan masalah: semuanya diunduh dengan baik, hanya kompilasi yang gagal.Saya akan menyarankan Anda untuk menginstal
ruby-dev
(ruby-devel
untuk distro berbasis rpm) paket ke mesin target Anda.gcc
paket mungkin diperlukan juga.Mencoba:
Atau, untuk distro Redhat:
Atau, untuk [open] SuSE:
sumber
ruby-dev
ituruby-devel
. Di sinilah saya menemukan apa yang sebenarnya saya butuhkan - digitalocean.com/community/articles/…sudo zypper install ruby-devel
untuk openSUSEruby2.2-dev
(atau versi mana pun yang telah Anda instal).Untuk Xcode 11 pada macOS 10.14 , ini dapat terjadi bahkan setelah menginstal Xcode dan menginstal alat baris perintah dan menerima lisensi dengan
Masalahnya adalah bahwa Xcode 11 mengirimkan macOS 10.15 SDK yang mencakup header untuk ruby2.6, tetapi tidak untuk ruby2.3 macOS 10.14. Anda dapat memverifikasi bahwa ini adalah masalah Anda dengan menjalankan
yang pada MacOS 10.14 dengan Xcode 11 cetakan yang tidak ada jalan
Namun, Xcode 11 menginstal macOS 10.14 SDK di dalamnya
/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
. Tidak perlu mencemari direktori sistem dengan menginstal file header lama seperti yang disarankan dalam jawaban lain. Sebagai gantinya, dengan memilih SDK itu, header ruby2.3 yang sesuai akan ditemukan:Ini sekarang harus dicetak dengan benar
Demikian juga,
gem install
harus berfungsi saat SDK dipilih.Untuk beralih kembali ke Xcode SDK saat ini, gunakan
sumber
Jika Anda menggunakan ruby 2.0 atau 2.2 (thanks @ patrick-davey) atau 2.3 (thanks @juanitofatas).
Dan Anda mendapatkan polanya di sini ...
sumber
sudo apt-get install ruby2.2-dev
E: Unable to locate package ruby2.2-dev
E: Couldn't find any package by regex 'ruby2.2-dev'
sudo apt-add-repository -y ppa:brightbox/ruby-ng && sudo apt-get update && sudo apt-get install -y ruby2.2-dev
Saya juga mengalami masalah ini karena saya menginstal Ruby di Ubuntu melalui brightbox , dan saya pikir ruby-dev adalah trunk of ruby. Jadi saya tidak menginstal. Instal perbaikan ruby2.3-dev:
sumber
Bagi mereka yang mendapatkan ini di Mac OS X Anda mungkin perlu menjalankan perintah berikut untuk menginstal alat baris perintah XCode, bahkan jika Anda sudah menginstal XCode:
Anda juga harus menyetujui syarat dan ketentuan XCode dengan menjalankan perintah berikut:
sumber
su - $USER -c 'xcode-select --install'
Saya punya masalah serupa menggunakan cygwin untuk menjalankan perintah berikut:
Saya menyelesaikannya dengan menginstal paket cygwin berikut:
sumber
/cygdrive/z/.gem/ruby/extensions/x86-cygwin/json-1.8.3/json/ext/parser.so: [BUG] Segmentation fault at 0x0001b8
rm -rf ~/.gem/
dan menerbitkan kembali perintah.ruby-dev
pada raspberry piSebagian besar solusi yang dipilih tidak berfungsi pada mesin saya (linux mint 18.04). Setelah melihat dengan cermat, saya menemukan bahwa g ++ hilang. Dipecahkan dengan
sumber
make
dang++
memperbaiki masalah saya di Ubuntu 18.04 juga!jika Anda menggunakan SUSE
sumber
sudo zypper in ruby-devel
.Xcode 11 / macOS Catalina
Pada Xcode 11 / macOS Catalina, file header tidak lagi berada di lokasi lama dan
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
file lama tidak lagi tersedia.Sebagai gantinya, tajuk sekarang diinstal ke
/usr/include
direktori jalur SDK saat ini:Sebagian besar direktori ini dapat ditemukan dengan menggunakan output dari
xcrun --show-sdk-path
. Dan jika Anda menambahkan jalur ini keCPATH
variabel lingkungan, lalu buat skrip (termasuk yang dipanggil viabundle
) umumnya akan dapat menemukannya.Saya menyelesaikan ini dengan mengatur file
CPATH
saya di saya.zshrc
:Setelah membuka shell baru (atau berjalan
source .zshrc
), saya tidak lagi menerima pesan kesalahan mkmf.rb tidak dapat menemukan file header untuk ruby di /usr/lib/ruby/ruby.h dan rubygem diinstal dengan benar.sumber
Mojave 10.14.6
danXCode 11.3.1
. Terima kasih banyak, butuh waktu 1 hari untuk menyelesaikan ini: /Di Fedora 21 ke atas, Anda cukup membuka terminal dan menginstal file Pengembangan Ruby sebagai root.
sumber
Anda mungkin perlu menginstal gcc setelah menginstal ruby-devel
sumber
Xcode -> Preferensi -> Lokasi
ubah Alat Baris Perintah ke Xcode 11.2.1
sumber
Pada Mac 10.14, file header sepertinya tidak diinstal di tempat yang benar. Daripada mengubah jalur seperti perbaikan lainnya, saya bisa menjalankan ini:
Ikuti instruksi dan ini menyelesaikan masalah saya.
sumber
Anda perlu menginstal seluruh ruby dan bukan hanya paket minimum. Perintah yang benar untuk digunakan adalah:
Perintah berikut juga tidak akan menginstal ruby lengkap:
sumber
Untuk Ubuntu 18, setelah memeriksa file log disebutkan saat menginstal
Hasil masuk ke /var/canvas/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nio4r-2.5.2/gem_make.out
dengan
Saya perhatikan bahwa
make
tidak ditemukan. Jadi instal make bysemuanya bekerja.
sumber
coba untuk ubuntu 16.04
sumber