web-dev-qa-db-ja.com

Gemネイティブエクステンションの構築に失敗しました(Compassのインストール)

最新バージョンのコンパス( https://rubygems.org/gems/compass/versions/1.0.0.alpha.17 )をインストールしようとすると、次のエラーが表示されます。

ERROR:  Error installing compass:
ERROR: Failed to build gem native extension.

 ERROR:  Error installing compass:
  ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby extconf.rb
checking for ffi.h... no
checking for ffi.h in /usr/local/include,/usr/include/ffi... yes
checking for ffi_call() in -lffi... yes
checking for ffi_prep_closure()... yes
checking for ffi_raw_call()... no
checking for rb_thread_blocking_region()... yes
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
checking for ffi_prep_cif_var()... no
creating extconf.h
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling AbstractMemory.c
compiling ArrayType.c
compiling Buffer.c
compiling Call.c
Call.c:303:5: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration]
    rbffi_thread_blocking_region(call_blocking_function, data, (void *) -1, NULL);
    ^
./Thread.h:78:39: note: expanded from macro 'rbffi_thread_blocking_region'
# define rbffi_thread_blocking_region rb_thread_call_without_gvl
                                      ^
1 warning generated.
compiling ClosurePool.c
compiling DataConverter.c
DataConverter.c:43:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling DynamicLibrary.c
compiling ffi.c
compiling Function.c
Function.c:479:33: warning: incompatible pointer types passing 'VALUE (void *)' to parameter of type 'void *(*)(void *)' [-Wincompatible-pointer-types]
        rb_thread_call_with_gvl(callback_with_gvl, &cb);
                                ^~~~~~~~~~~~~~~~~
Function.c:102:46: note: passing argument to parameter 'func' here
extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
                                             ^
Function.c:563:9: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration]
        rb_thread_call_without_gvl(async_cb_wait, &w, async_cb_stop, &w);
        ^
Function.c:738:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
3 warnings generated.
compiling FunctionInfo.c
compiling LastError.c
compiling LongDouble.c
compiling MappedType.c
compiling MemoryPointer.c
compiling MethodHandle.c
compiling Platform.c
compiling Pointer.c
compiling Struct.c
compiling StructByReference.c
compiling StructByValue.c
compiling StructLayout.c
compiling Thread.c
compiling Type.c
compiling Types.c
compiling Variadic.c
linking shared-object ffi_c.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [ffi_c.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-13/2.0.0/ffi-1.9.3/gem_make.out

何が起きてる?最新のコンパスをエラーなくインストールするにはどうすればよいですか?

254
cusejuice

これを試して、もう一度コンパスをインストールしてみてください

apt-get install Ruby-dev
544

コンパスをインストールするには、Mac OS X 10.10(Yosemite)で以下の作業を行ってください。

1. Ruby環境をセットアップする

  • Rubyがインストールされていて最新であることを確認してください:Ruby -v
  • GemのSudo gem update --systemを更新する

2. MAC環境の設定

Xcodeコマンドラインツールを-Install これはコンパスをインストールするための鍵です。 xcode-select --install

- Xcodeコマンドラインツールをインストールすることは、コンパスをOS Xで動かすための鍵です

3.コンパスをインストールします

Sudo gem install compass

117
neteru

最良の方法はcompassをインストールするSudo apt-get install Ruby-compassです。

41
cooljl31

Debianで試すことができます

Sudo apt-get install gcc Ruby-dev rubygems compass

fedora用、チェントス用

yum -y install gcc Ruby-devel rubygems compass

それは私のために働きました。

35
vanduc1102

私は約3時間あなたと同じ問題に苦労しました。 Compass 1.0.alpha19の時点で、要件はrvmバージョン1.9.3です。

未収集の投稿がいくつかありますが、私にとってうまくいったのは次のとおりです。

  1. Sudo gem uninstall sass
  2. Sudo gem uninstall compass
  3. rvm install Ruby-1.9.3-p448
  4. Sudo gem install sass --pre
  5. Sudo gem install compass --pre

そしてそれはそれをしました。それがあなたにとってもうまくいくことを願っています!

28

この問題を解決するために、私はRubyの最新版とgem gem update --systemを手に入れたことを確かめなければなりませんでした。それから、Xcodeとコマンドラインツールがインストールされていることを確認する必要がありました:xcode-select --install

23
BlackHatSamurai

Mac OSでは、この機能をインストールする必要があります。

xcode-select --install
14
user3645907

こんにちはそれはそれがMac上で動作するようにするための挑戦だったのでとにかくここで解決策です

  1. macports をインストール
  2. インストール rvm
  3. ターミナルを再起動
  4. rvm requirementsを実行してからrvm install 2.1を実行
  5. そしてgem install compass --preを実行する最後のステップ

よくわかりませんが、Mavericks上のRubyバージョンはネイティブエクステンションなどをサポートしていません。

10
paul.g

なぜこれらのどれもが正しい答えとしてマークされていないのかわからないが、私はグーグル検索を通してここに上陸したので、私は私が知っていることを伝えるつもりだ...

@ paul_gのメソッドは私にはかなり近いものでした。Macosx10.9 Retinaでの私のステップです。

  • Macportsをインストールする
  • Rvmをインストールします(SSL関連の問題に対してRuby安定版を追加--insecureフラグ)$ \curl -sSL --insecure https://get.rvm.io | bash -s stable --Ruby
  • ターミナルを再起動するか、自分のプロファイルを作成します。
  • rvm requirements --with-gcc=clangを実行する最後の安定版をダウンロードしたのでRubyをアップデートする必要はありません。
  • そしてgem install compass --preを実行する最後のステップ
6
tbremer

YosemiteにCompassをインストールするには、Ruby環境をセットアップしてXcodeコマンドラインツールをインストールする必要があります。しかし、最も重要なことは、Xcodeを更新した後、 Xcodeアプリケーションを起動してAppleのライセンス条項に同意することです 。これでコンポーネントのインストールは完了です。その後、あなたはコンパスをインストールすることができます。Sudo gem install compass

4
Gratz

あなたは、おそらくデフォルトであなたのシステムにインストールされていない、Appleのコマンドラインツールをインストールする必要があるかもしれません。同じエラーが表示されましたが、ここで説明する手順を実行する前に(関連性のない問題が原因で)Command Line Toolsをインストールし、もう一度試してみると問題なくコンパスがインストールされました。 YMMV.

4
John Ryan

gcc、json_pure が必要です

私はいくつかの記事からいくつかの情報を集めます

Sudo gem uninstall sass
Sudo gem uninstall compass
Sudo gem update --system
gem install json_pure   (if you have already have continued to next step)
Sudo yum install gcc gcc-c++   (if you have already have continued to next step)
Sudo gem install sass

Sudo gem install compass
3
gsm

ヨセミテでは、コマンドラインツールをインストールするだけです。それはうまくいきます。

他の宝石がうまくインストールされていても。 gem install compassを動作させるには、xcode-select --installを実行する必要があります。

がんばろう。

2
A.Sanchez.SD

brew install coreutilsを試してください。

同僚によって最近Ruby 2.2.5に更新された、古くなっているsass/compassプロジェクトを再構築中に、私はこの問題にぶつかった。プロジェクトはrvmとbundlerを使用しています。これらは私の命令でした

$ rvm install Ruby-2.2.5
$ rvm use Ruby-2.2.5
$ gem install bundler
$ bundle install

これにより、StackOverflow環境で報告されている有名なffiインストールエラーに遭遇しました。

An error occurred while installing ffi (1.9.14), and Bundler cannot continue.

この問題を解決するための提案のほとんどは、Xcodeコマンドラインツールをインストールすることです。しかし、これは私の環境に既にインストールされていました:

$ xcode-select -p
/Library/Developer/CommandLineTools

他の提案はgccをインストールするように言った...だから私は試してみました:

$ brew install gcc46

しかし、これもセグメンテーション違反のため失敗しました... ¯\_(ツ)_/¯

それで、私はそれから同じffiエラーを与えるかどうか確かめるために手でコンパスをインストールしようとしました:

$ gem install compass

しかし驚いたことに、私はまったく違うエラーを受けました:

make: /usr/local/bin/gmkdir: No such file or directory

それで私はその問題を捜し、そして この古いブログ記事 を見つけた/ /それはcoreutilsをインストールするように言った:

$ brew install coreutils

Homebrewでcoreutilsをインストールした後、bundlerはコンパスと依存関係を正常に終了してインストールできました。

終わり。

2
JamesWilson

いつ

gem installオーバーコミット

実行されてもこのエラーが端末に配置されています。

Failed to build gem native extension

同じようにしてください

xcode-select --install

そしてそれはその問題も解決します

2

Mac OSの場合

私のエラーは、XCodeをインストールした後にXCode - Preferences - Locations - Command Line Toolsでオプションを選択するのを忘れていたことです(私は2つのバージョンを持っていて、後で削除しました)。多分それは誰かを助けるでしょう。

enter image description here

2
Eridana
  • Sudo gem update - システム
  • 須藤宝石インストールコンパス
2
Federico Bohn

Ubuntu 14.04では、 apt-get install ruby​​gems を実行しているとエラーが発生します

E:パッケージ 'rubygems'にはインストール候補がありません

followコマンドは問題を解決します。

Sudo apt-get install gcc Ruby-devel ruby​​gems-integration Ruby-compass

2
onebraveman

Mac OS X 10.9では、xcode-select --installを試すと、次のエラーが発生します。

Software Updateサーバーから現在入手できないため、ソフトウェアをインストールできません。

解決策は、AppleのWebサイトから直接Command Line Tools(OS X 10.9)をダウンロードすることです。 https://developer.Apple.com/downloads/index.action?name=for%20Xcode%20-

その後、Command Line Toolsの最新バージョンをインストールすることができます。

2
lepix

Ubuntuを使っているのなら、install build-essentialを試してみてください。

apt install build-essential

私は、ubuntuのフレッシュインストールでのgemsのインストールに問題があり、この解決策は私のために働きました。

2
Adi

これを試して、もう一度コンパスをインストールしてみてください

Sudo apt install Ruby-full
1
Pokkhi

Linux Mintでも同じ問題がありましたが、Rubyをアンインストールしてから再度インストールすることで解決できました。

Rubyをアンインストールします。 /

Sudo apt-get remove Ruby

次のようないくつかのRubyパッケージが報告されています。

Package 'Ruby' is not installed, so not removed
The following packages were automatically installed and are no longer required:
libruby2.2 Ruby-chunky-png Ruby-sass rubygems-integration
Use 'apt-get autoremove' to remove them.

残りのパッケージをアンインストールする*

apt-get autoremove

Rubyをもう一度インストールしてください

Sudo apt-get install Ruby2.2

コンパスをインストールします

Sudo gem install compass

最後のコマンドは正常に実行されました。

0