gem 기본 확장을 빌드하지 못했습니다 (Compass 설치)


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

무슨 일이야? 최신 나침반을 오류없이 설치하려면 어떻게합니까?



시스템을 확인하십시오.
Sorter

답변:


577

이것을 시도한 다음 나침반을 다시 설치하십시오

apt-get install ruby-dev

33
이것은 우분투의 오류를 수정하지만 OP가 OSX를 사용하고있는 것 같습니다.
mhnagaoka

1
우분투 14.04 LTS에 나를 위해 고정
thomh

30
CentOS에서 "yum install ruby-devel"으로 작업했습니다. 감사 !
B2F

6
OSx 질문에 대한 답변에서 내 우분투 문제에 대한 해결책을 찾는 것이 재미 있습니다. 그럼에도 불구하고, 당신의 대답이 내 문제를 해결했을 때 당신은 나의 공감대를 얻었습니다. Tnx!
e-sushi

3
이것을 Windows에서 작동시키는 방법에 대한 아이디어가 있습니까? Ruby dev 도구를 사용하여 설치 choco install ruby2.devkit했지만 여전히 작동하지 않습니다.
jtate

124

나침반을 설치하려면 Mac OS X 10.10 (Yosemite)에서 다음을 수행해야합니다.

1. 루비 환경 설정

  • 루비가 설치되어 있고 최신인지 확인하십시오 : ruby -v
  • 보석 업데이트 sudo gem update --system

2. MAC 환경 설정

설치 엑스 코드 명령 행 도구 이 나침반을 설치하는 키입니다.

xcode-select --install

Xcode 명령 행 도구 설치는 OS X에서 Compass를 작동시키는 열쇠입니다

3. 나침반 설치

sudo gem install compass

3
저에게는 이것이 정답이었습니다. Xcode 명령 줄 도구가 필요합니다
svnm

2
고마워, 나를 위해 일했다, 당신 말이 맞아, Xcode 명령 줄 도구가 핵심입니다.
sarcom

5
이것은 하나의 추가로 저에게 효과적이었습니다. 라이센스 계약에 동의하고 설정을 마치려면 실제로 XCODE를 시작해야합니다. 답변에 태그를 추가 할 가치가 있습니다.
Bruford

GUI를 통한 업데이트 수락 (계약 조건)도 효과가있었습니다.
cassioscabral

최근 업데이트 된 MacBook Pro Sierra 10.12.6에서 sudo gem install compass를 실행하기 전에 "sudo xcodebuild -license"를 실행하여 이용 약관에 동의해야했습니다 ...
jocherra

46

가장 좋은 방법은 sudo apt-get install ruby-compass나침반을 설치하는 것입니다.


1
와우, 때로는 너무 쉽습니다 ^^ 보석으로 나침반을 설치하려고했지만 보석으로 해결되지 않은 일부 종속성이있었습니다. apt-get으로 잘 작동했습니다! 감사합니다
naitsirch


30

나는 약 3 시간 동안 같은 문제로 어려움을 겪었습니다. 현재 Compass 1.0.alpha19rvm 버전 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로 설치 한 루비 버전을 제거 한 다음 rvm.io/rvm/install 의 지침에 따라 다시 설치했습니다 . 새로운 루비 / rvm 버전 나침반이 올바르게 구축되었습니다.
adosaiguas

2
이것에 매우 감사합니다. 나는 3 단계를 변경 rvm install ruby-2.1.21.9.3는 더 이상 업데이트되는로
timelf123

24

이 문제를 해결하려면 최신 버전의 루비와 보석이 있어야합니다 gem update --system. 그런 다음 Xcode 및 명령 줄 도구가 설치되어 있는지 확인해야했습니다 xcode-select --install.


xcode-select --install완료되었지만 이것은 나를 위해 해결되지 않습니다
Ade


10

안녕하세요, Mac에서 작동시키는 것이 어려웠으므로 여기에 해결책이 있습니다.

  1. 설치 macports
  2. 설치 rvm
  3. 터미널 재시작
  4. 운영 rvm requirements 후 실행rvm install 2.1
  5. 마지막 단계는 gem install compass --pre

확실하지는 않지만 Mavericks의 루비 버전은 기본 확장 등을 지원하지 않습니다. "2.1"처럼 다른 루비 버전을 가리키면 정상적으로 작동합니다.


macports를 사용하지 않는 것이 좋습니다.
노미스

6

왜 이것들 중 정답으로 표시되지 않았는지 모르겠지만 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 마지막 안정 버전을 다운로드 때문에 루비를 업데이트 할 필요가 없습니다
  • 마지막 단계는 gem install compass --pre

5

Ubuntu를 사용하는 경우 build-essential을 설치해야합니다.

apt install build-essential

우분투를 새로 설치할 때 보석 설치에 문제가 있었고이 솔루션이 효과적이었습니다.


나는 같은 문제가 있었다. 더 많은 사람들이 이것을지지해야합니다.
Sorter

4

기본적으로 시스템에 설치되어 있지 않은 Apple의 명령 행 도구를 설치해야 할 수도 있습니다. 나는 같은 오류가 발생했지만 여기의 지침을 따르기 전에 관련이없는 문제로 인해 명령 줄 도구를 설치했으며 다시 시도 할 때 문제없이 나침반이 설치되어 있는지 확인하십시오. YMMV.


이렇게하면 위의 문제가 해결되었으므로 위의 질문에 대한 대답입니다.
피터 J 해리슨

4

Yosemite에 Compass를 설치하려면 Ruby 환경을 설정하고 Xcode 명령 행 도구를 설치해야합니다. 그러나 Xcode를 업데이트 한 후 가장 중요한 것은 Xcode 응용 프로그램을 시작하고 Apple 사용 조건에 동의해야합니다 . 구성 요소 설치가 완료됩니다. 그 후, Compass : sudo gem install compass를 설치할 수 있습니다


3

macOS 10.14 Mojave의 경우 xcode-select --installstd 헤더를 설치하려면 명령 줄 도구를 이미 설치 하고 다음 명령을 실행해야합니다.

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 업데이트-시스템 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
Bryce 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하면 다음 오류가 발생합니다.

현재 소프트웨어 업데이트 서버에서 소프트웨어를 사용할 수 없으므로 소프트웨어를 설치할 수 없습니다.

해결책은 Apple 웹 사이트에서 직접 Command Line Tools (OS X 10.9)를 다운로드하는 것입니다. https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

그런 다음 최신 버전의 명령 행 도구를 설치할 수 있습니다.


2

우분투 14.04에서 apt-get install rubygems 를 실행하는 동안 오류가 발생했습니다

E : 패키지 'rubygems'에 설치 후보가 없습니다.

명령을 따라 문제를 해결하십시오.

sudo apt-get 설치 gcc ruby-devel rubygems 통합 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

언제

보석 설치 오버 커밋

이 오류는 터미널에 배치되었습니다.

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-환경 설정-위치-명령 줄 도구에서 옵션을 선택하는 것을 잊었습니다 (2 버전이 있고 나중에 버전을 삭제했습니다). 어쩌면 누군가를 도울 것입니다.

여기에 이미지 설명을 입력하십시오


1

이것을 시도한 다음 나침반을 다시 설치하십시오

sudo apt install ruby-full

0

Linux Mint에서 같은 문제가 있었지만 루비를 제거하고 다시 설치하여 문제를 해결할 수있었습니다.

루비 제거 :

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

루비를 다시 설치하십시오

sudo apt-get install ruby2.2

나침반 설치

sudo gem install compass

마지막 명령은 성공적으로 실행되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.