it-swarm.com.ru

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

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

257
cusejuice

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

apt-get install Ruby-dev
541
Rutger van Baren

Для того чтобы установить компас В 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

115
neteru

Лучший способ - это Sudo apt-get install Ruby-compass установить компас. 

41
cooljl31

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

Sudo apt-get install gcc Ruby-dev rubygems compass

для Fedora, Centos

yum -y install gcc Ruby-devel rubygems compass

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

34
vanduc1102

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

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

  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
A. A. Trabucco Campos

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

23
BlackHatSamurai

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

xcode-select --install
13
user3645907

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

  1. Установить macports
  2. Установить rvm
  3. Перезапустить терминал
  4. Запустите rvm requirements, затем запустите rvm install 2.1
  5. И последний шаг для запуска gem install compass --pre

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

10
paul.g

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

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

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

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

4
Gratz

Вам может понадобиться установить инструменты командной строки Apple, которые, вероятно, не установлены в вашей системе по умолчанию. Я получал ту же ошибку, но перед тем, как следовать какой-либо из приведенных здесь инструкций, я установил инструменты командной строки (из-за несвязанной проблемы) и вот-вот установил компас без проблем при повторной попытке. 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

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

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

Удачи.

2
A.Sanchez.SD

Попробуйте 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, компоновщик смог завершить и успешно установил компас и зависимости.

Конец.

2
JamesWilson

когда 

gem install overcommit

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

Failed to build gem native extension

пожалуйста, сделай то же самое 

xcode-select --install

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

2
miukki

Для Mac OS: 

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

 enter image description here

2
Eridana
  • Sudo gem update - система
  • Судо драгоценный камень установить компас 
2
Federico Bohn

В Ubuntu 14.04 при выполнении apt-get install rubygems возникает ошибка

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

следуйте командам решить проблемы.

Sudo apt-get install gcc Ruby-devel rubygems-интеграция Ruby-compass

2
onebraveman

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

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

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

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

2
lepix

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

apt install build-essential

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

1
Adi

У меня была та же проблема в 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

Установить Compass

Sudo gem install compass

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

0
claudiu.f.marginean

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

Sudo apt install Ruby-full
0
Pokkhi