gemネイティブ拡張の構築に失敗しました(コンパスのインストール)


275

コンパスの最新バージョン(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

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



システムにmakeがあることを確認してください。
ソーター2018

回答:


577

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

apt-get install ruby-dev

33
これでUbuntuのエラーが修正されますが、OPはOSXを使用しているようです。
mhnagaoka 2014年

1
Ubuntu 14.04 LTSで私のために修正
15:16にトム

30
同等の「yum install ruby​​-devel」を使用してCentOSで作業しました。よろしくお願いします!
B2F 2015年

6
OSxの質問への回答で私のUbuntuの問題の解決策を見つけるのはおかしい。それにもかかわらず、あなたの答えが私の問題を解決したので、あなたは私の賛成票を獲得しました。Tnx!
e-sushi

3
これをWindowsで動作させる方法はありますか?Ruby開発ツールを使用してインストールしましたchoco install ruby2.devkitが、それでも機能しません
jtate

124

Mac OS X 10.10(Yosemite)にコンパスをインストールするには、以下を実行する必要がありました。

1. Ruby環境のセットアップ

  • Rubyがインストールされ、最新であることを確認します。 ruby -v
  • 宝石を更新 sudo gem update --system

2. MAC環境のセットアップ

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

xcode-select --install

Xcodeコマンドラインツールのインストールは、OS XでCompassを機能させるための鍵です

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

sudo gem install compass

3
私にとってこれは正解
でした。Xcode

2
ありがとう、私のために働いた、あなたは正しい、Xcodeコマンドラインツールが鍵です。
sarcom

5
これは私にとって1つの追加で機能しました。実際にXCODEを開始して、ライセンス契約に同意してセットアップを完了する必要があります。あなたの答えにタグを付ける価値があるかもしれません。
Bruford

GUIを介した更新(契約条件)の受け入れも機能しました。
cassioscabral

シエラ10.12.6までのPro最近更新のMacBookには、私も....コンパスをインストールsudoの宝石を実行する前に、契約条件を受け入れることを「sudoのxcodebuild -license」を実行しなければならなかった
jocherra

46

最善の方法はsudo apt-get install ruby-compass、コンパスをインストールすることです。


1
うわー、時々とても簡単です^^ gemでコンパスをインストールしようとしましたが、gemで解決されない依存関係がいくつかありました。apt-getでうまくいきました!ありがとう
naitsirch


30

同じ問題に約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

そしてそれはそれをやった。それもあなたのために働くことを願っています!


最近同じ問題が発生しましたが、新しいバージョンでした。私がしたことは、以前にaptitudeでインストールしたRubyバージョンをアンインストールし、次にrvm.io/rvm/installの指示に従って再度インストールしました。新しいruby / rvmバージョンでは、コンパスが適切に構築されています。
アドサイグア2014年

2
これをありがとう、とても役に立ちました。私は、手順3を変更していないrvm install ruby-2.1.2、もはや更新されている1.9.3のように
timelf123

24

この問題を解決するには、Rubyとgemの最新バージョンを確実に入手する必要がありましたgem update --system。次に、Xcodeとコマンドラインツールがインストールされていることを確認する必要がありましたxcode-select --install


xcode-select --installは行われたが、これは私にとってそれを解決しない
Ade

14

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

xcode-select --install

10

こんにちはMacで動作させるのは難題だったので、とにかくここに解決策があります

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

よくわかりませんが、Mavericksのルビーバージョンはネイティブ拡張などをサポートしていません。したがって、「2.1」のように他のルビーバージョンを指定すると、問題なく動作します。


macportsを使用しないことをお勧めします。
nomis 2015

6

なぜこれらのどれもが正解としてマークされていない理由はわかりませんが、Google検索でここに到達したので、知っていることを伝えます...

@paul_gの方法は私にとってかなり近かった、Mac osx10.9 Retinaでの私の手順:

  • macportsをインストールする
  • rvmをインストールします(--insecureSSL関連の問題に対してはruby add フラグで安定)$\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • ターミナルを再起動/プロファイルをリソース
  • 走る rvm requirements --with-gcc=clangあなたは最後の安定版をダウンロードしたので、あなたは、Rubyを更新する必要はありません
  • そして実行する最後のステップ gem install compass --pre

5

Ubuntuを使用している場合は、build-essentialをインストールしてみてください。

apt install build-essential

ubuntuの新規インストールでのgemsのインストールに問題があり、この解決策でうまくいきました。


私も同じ問題を抱えていました。もっと多くの人がこれを賛成すべきです。
ソーター2018

4

Appleのコマンドラインツールをインストールする必要がある場合があります。これは、デフォルトではシステムにインストールされていない可能性があります。同じエラーが発生しましたが、ここで説明する手順を実行する前に、コマンドラインツールをインストールし(無関係な問題が原因)、loを試してみましたが、もう一度試すと問題なくコンパスがインストールされました。YMMV。


これで私は上記の問題を解決したので、これは上記の質問に対する許容できる答えです。
Peter J Harrison

4

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


3

macOS 10.14 Mojaveの場合は、コマンドラインツールをインストールしてあることを確認しxcode-select --install、次のコマンドを実行してstdヘッダーをインストールします。

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

ここでコマンドを再試行してください。


3

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

こんにちは** sudo gem update --system **が機能しない場合は、更新でエラーが発生します

sudo gem update --system 2.7.8


私も実行しなければならなかったsudo yum install -y redhat-rpm-configため、このエラーのコンパスをインストールする前にFedora 24のために:gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
ブライスGuinta

sudo gem update --systemエラーが出ました:ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem:(
Ade

2

ヨセミテでは、コマンドラインツールをインストールするだけで済みます。その後、動作します。

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

幸運を。


2

Mac OS X 10.9でを実行しようxcode-select --installとすると、次のエラーが発生します。

現在、ソフトウェアアップデートサーバーから利用できないため、ソフトウェアをインストールできません。

解決策は、コマンドラインツール(OS X 10.9)をAppleのWebサイトから直接ダウンロードすることです。 https //developer.apple.com/downloads/index.action?name=for 20-

その後、コマンドラインツールの最新バージョンをインストールできます。


2

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

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

コマンドに従って問題を解決します。

sudo apt-get install gcc ruby​​-devel ruby​​gems-integration ruby​​-compass


2

お試しくださいbrew install coreutils

最近、同僚によってルビー2.2.5に更新された古いsass / compassプロジェクトを再構築しているときに、この問題に遭遇しました。プロジェクトは、rvmとbundlerを使用します。これらは私のコマンドでした

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

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

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

coreutilsHomebrew を使用してインストールした後、バンドラーはコンパスと依存関係を正常に完了およびインストールできました。

終わり。



2

いつ

gem install overcommit

実行すると、このエラーがターミナルに配置されています。

Failed to build gem native extension

同じことをしてください

xcode-select --install

そしてそれはその問題も修正します


わかりますxcode-select: error: command line tools are already installed, use "Software Update" to install updates。これはそれを修正しません。
Ade

2

Mac OSの場合:

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

ここに画像の説明を入力してください


1

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

sudo apt install ruby-full

0

Linux Mintでも同じ問題が発生しましたが、rubyをアンインストールして再インストールすることで修正できました。

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

sudo apt-get remove 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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.