Не удалось создать собственное расширение 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

Что здесь происходит? Как установить последний компас без ошибок?

Ответ 1

Попробуйте это, затем попробуйте снова установить компас

apt-get install ruby-dev

Ответ 2

Для установки компаса В Mac OS X 10.10 (Yosemite) необходимо было выполнить следующее:

1. Настройте среду Ruby

  • Убедитесь, что ruby установлен и обновлен: ruby -v
  • Обновить драгоценный камень sudo gem update --system

2. Настройте среду MAC

Установите инструменты командной строки XCode, это ключ для установки Compass.

xcode-select --install

Установка инструментов командной строки Xcode - ключ к работе Compass на OS X

3. Установите Компас

sudo gem install compass

Ответ 3

Лучше всего установить sudo apt-get install ruby-compass для установки компаса.

Ответ 4

Вы можете попробовать в Debian с помощью

sudo apt-get install gcc ruby-dev rubygems compass

для Fedora, Centos

yum -y install gcc ruby-devel rubygems compass

Это сработало для меня.

Ответ 5

Я боролся с тобой в течение 3 часов. Начиная с Compass 1.0.alpha19, для версии rvm 1.9.3 требуется.

Есть несколько неувязанных сообщений, однако то, что сработало для меня, было следующим:

  • sudo gem uninstall sass
  • sudo gem uninstall compass
  • rvm install ruby-1.9.3-p448
  • sudo gem install sass --pre
  • sudo gem install compass --pre

и сделал это. Надеюсь, это сработает и для вас!

Ответ 6

Чтобы решить эту проблему, мне пришлось убедиться, что у меня самая последняя версия Ruby и драгоценных камней gem update --system; то я должен был убедиться, что Xcode и средства командной строки были установлены: xcode-select --install.

Ответ 7

В Mac OS вам необходимо установить эту функцию!

xcode-select --install

Ответ 8

Привет, было сложно заставить его работать на Mac, так что в любом случае это решение

  • Установите macports
  • Установите rvm
  • Терминал перезагрузки
  • Запустите rvm requirements, затем запустите rvm install 2.1
  • И последний шаг для запуска gem install compass --pre

Я не уверен, но рубиновая версия на Mavericks не поддерживает родные расширения и т.д.... поэтому, если вы укажете на другую рубиновую версию, как я сделал "2.1", она отлично работает.

Ответ 9

Не знаю, почему ни один из них не помечен как правильный ответ, но я приземлился здесь через поиск Google, поэтому я передам то, что знаю...

Метод @paul_g был для меня близок, мои шаги на Mac osx10.9 Retina:

  • Установить macports
  • Установить rvm (стабильный с флагом ruby ​​add --insecure для связанных с SSL вопросов) $\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • Перезапустить терминал/Ресурс вашего профиля
  • Запустить rvm requirements --with-gcc=clang Вам не нужно обновлять Ruby, потому что вы загрузили последнюю стабильную версию
  • И последний шаг для запуска gem install compass --pre

Ответ 10

Вам может потребоваться установить Apple Command Line Tools, которые по умолчанию не установлены в вашей системе. Я получал ту же ошибку, но перед выполнением каких-либо инструкций здесь я установил средства командной строки (из-за несвязанной проблемы), и теперь компас установлен без проблем, когда я попытался снова. YMMV.

Ответ 11

Чтобы установить Compass on Yosemite, вам нужно настроить среду Ruby и установить инструменты командной строки Xcode. Но самое главное, после обновления Xcode обязательно запустите приложение Xcode и примите условия лицензии Apple. Он завершит установку компонентов. После этого вы можете установить Compass: sudo gem install compass

Ответ 12

у вас должно быть 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

Ответ 13

В yosemite все, что вам нужно сделать, это установить инструменты командной строки. то он работает.

Даже если другие драгоценные камни установлены нормально. Вы должны запустить xcode-select --install для установки gem install compass.

Удачи.

Ответ 14

В Mac OS X 10.9, если вы попробуете xcode-select --install, вы получите следующую ошибку:

Не удается установить программное обеспечение, поскольку в настоящее время оно недоступно сервера обновления программного обеспечения.

Решение заключается в загрузке инструментов командной строки (OS X 10.9) непосредственно с веб-сайта Apple: https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

Затем вы сможете установить последнюю версию средств командной строки.

Ответ 15

В ubuntu 14.04, когда выполняются apt-get install rubygems, появляется ошибка

E: Пакет 'rubygems' не имеет кандидата на установку

выполните команду, чтобы решить проблемы.

sudo apt-get install gcc ruby-devel rubygems-integration ruby-compass

Ответ 16

Попробуйте brew install coreutils.

Я столкнулся с этой проблемой при восстановлении старого проекта sass/compass, который недавно был обновлен до ruby ​​2.2.5 коллегой. В проекте используются 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

После установки coreutils с помощью Homebrew, пакету удалось успешно завершить работу с компасом и зависимостями.

Конец.

Ответ 17

  • Обновление sudo gem --system
  • sudo gem install compass

Ответ 18

когда

gem install overcommit

также эта ошибка была помещена в терминал.

Failed to build gem native extension

сделайте то же самое

xcode-select --install

и он также исправит эту проблему.

Ответ 19

Для Mac OS:

Моя ошибка заключалась в том, что я забыл выбрать опцию в XCode - Preferences - Locations - Инструменты командной строки после установки нового XCode (у меня было 2 версии, а затем я удалил один). Может быть, это поможет кому-то.

введите описание изображения здесь

Ответ 20

Если вы используете Ubuntu, попробуйте установить build-essential

apt install build-essential

У меня были проблемы с установкой драгоценных камней при новой установке ubuntu, и это решение сработало для меня.

Ответ 21

Попробуйте это, затем попробуйте установить компас снова

sudo apt install ruby-full

Ответ 22

Для macOS 10.14 Mojave, убедитесь, что вы уже установили инструменты командной строки через xcode-select --install и выполните следующую команду для установки заголовков std.

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

Теперь попробуйте снова.

Ответ 23

Мне нужно было установить самые последние инструменты командной строки (в течение последних 30 дней) из магазина Apple App.

Ответ 24

У меня была такая же проблема с Linux Mint, но я смог ее исправить, удалив 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

Последняя команда выполнена с успехом.