gemをインストールできません-gemネイティブ拡張の構築に失敗しました-そのようなファイルをロードできません— mkmf(LoadError)


172

Ruby 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

または、それが機能しない場合は、Rubyのバージョンに応じて、次のように実行します

sudo apt-get install ruby​​1.9.1-dev

あなたの問題を修正する必要があります。


まだ動作していません?ruby-devのインストール後に次のことを試してください。

sudo apt-get install make


しかし、私は1.9.3ルビーしか持っていません。
アレクサンドル

5
ruby 1.9.3はruby 1.9.1のエイリアスです

6
インストール後、ruby1.9.1-dev私もしなければなりませんでしたsudo apt-get install make。ありがとうございました!
wasatchwizard 2013年

6
コマンドでrubyをインストールした場合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(LinuxのWindowsサブシステム)の場合、インストールbuild-essentialパッケージが必要です。

sudo apt install build-essential

1
他の提案のいずれもそれをしていないようだった後、私のためにそれを解決しました。私のセットアップ:Win10 Pro + WSL with Ubuntu 18.04 + Ruby 2.5。ありがとう!
cjs1978

1
Ubuntu Server Hyper-V VMについても同様です。
Jorge Yanes Diez、

1
Docker内のUbuntuで私のために働いた
Miguel Mota

これは、Typhoeusをインストールしようとしたときに、Ubuntu 18.04 LTSの通常のインストールで機能しました。そこに着くために年齢を取った、ありがとう!
再作成エデン

8

私はjquery-railsをインストールしようとして同じ問題がありました。修正は

sudo apt-get install zlibc zlib1g zlib1g-dev

1
インストールzlib1g-devするだけで、ここで必要なもの、または少なくとも私にとっては必要なものが提供されます。
lindes

4

Rubyの別のバージョンをインストールする必要があることがわかりました。コマンドを実行する

$ sudo apt-get install ruby1.9.1-dev

次に、拡張機能のインストールを試みます

g ++がないことが通知されている問題が発生した場合は、次のコマンドを実行してインストールできます。

$ sudo apt-get install g++

4

これを解決しようとする2時間の野生のガチョウの追跡を終えたところです。投稿された回答がどれもうまくいきませんでした。Mac上のIm(Mojaveバージョン10.14.6、Xcodeバージョン11.3)。

rubyファイルのヘッダーが欠落していることが判明したため、実行する必要がありました open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

インストールしたCommandLineToolsのバージョンに "Packages"フォルダーがなかったため、最初はうまくいきませんでした。だから私はこのようにアンインストールして再インストールしました:

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。
パルミ

ありがとう。フラッター開発用の「sudo gem install cocoapods」をインストールすると、あなたのソリューションは私にとってうまくいきました。
ベンカタラマンK

3

将来誰かがこの問題を抱えている場合に備えて、私はMacを使用していて、「xcode-select --install」を使用してコマンドラインツールをインストールする必要がありました。


1
これでうまくいきました。私の場合、El Capitanにアップグレードするまでビルドが正常に機能していたため、頭を悩ませていました。
bruce1337

2
  1. ruby-devがインストールされていることを確認してください
  2. makeがインストールされていることを確認してください
  3. それでもエラーが発生する場合は、提案されたパッケージを探してください。次のようなものをインストールしようとしている場合gem install pg場合は、lib libpq-devsudo apt-get install libpq-dev)もインストールする必要があります。

1

libmysqlclient-devがインストールされていることを確認するのにも役立ちます(Ubuntu 14.04)


1

これでうまくいきました。 bundle config --global build.snappy --with-opt-dir="$(brew --prefix snappy)"


0

Macでは、私にとってこれはうまくいきます:

CONFIGURE_OPTS="--enable-shared" rbenv install 2.2.2

0

ソリューションを検索したところ、ruby1.8だけでなく、-devパッケージが必要であることがわかりました。したがって、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.