ไม่สามารถสร้างส่วนขยายดั้งเดิมของอัญมณี (การติดตั้งเข็มทิศ)


275

เมื่อฉันพยายามติดตั้งเข็มทิศเวอร์ชันล่าสุด ( https://rubygems.org/gems/compass/versions/1.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

เกิดอะไรขึ้นที่นี่? ฉันจะติดตั้งเข็มทิศล่าสุดโดยไม่มีข้อผิดพลาดได้อย่างไร



โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำในระบบของคุณ
ตัวเรียงลำดับ

คำตอบ:


577

ลองทำเช่นนี้แล้วลองติดตั้งเข็มทิศอีกครั้ง

apt-get install ruby-dev

33
นี่เป็นการแก้ไขข้อผิดพลาดบน Ubuntu แต่ดูเหมือนว่า OP กำลังใช้งาน OSX
mhnagaoka

1
คงที่สำหรับฉันใน Ubuntu 14.04 LTS
thomh

30
ทำงานบน CentOS ด้วย "yum install ruby-devel" ซึ่งเทียบเท่า ขอบคุณมาก!
B2F

6
ตลกที่จะหาทางแก้ไขปัญหา Ubuntu ของฉันในคำตอบสำหรับคำถาม OSx อย่างไรก็ตามคุณมี upvote ของฉันเป็นคำตอบของคุณเพียงแก้ไขปัญหาของฉัน tnx!
e-sushi

3
มีความคิดว่าจะให้สิ่งนี้ทำงานบน Windows ได้อย่างไร? ฉันติดตั้งเครื่องมือ Ruby dev แล้วchoco install ruby2.devkitแต่ก็ยังใช้งานไม่ได้
jtate

124

ในการติดตั้งเข็มทิศบน Mac OS X 10.10 (โยเซมิตี) ต้องดำเนินการดังนี้:

1. ตั้งค่า Ruby Environment

  • ตรวจสอบให้แน่ใจว่าได้ติดตั้งทับทิมแล้วและทันสมัย: ruby -v
  • อัปเดตของอัญมณี sudo gem update --system

2. ตั้งค่า MAC Environment

ติดตั้งเครื่องมือบรรทัดคำสั่ง Xcodeนี่คือกุญแจสำคัญในการติดตั้งเข็มทิศ

xcode-select --install

การติดตั้งเครื่องมือบรรทัดคำสั่ง Xcode เป็นกุญแจสำคัญในการทำให้ Compass ทำงานบน OS X

3. ติดตั้ง Compass

sudo gem install compass

3
สำหรับฉันนี่คือคำตอบที่ถูกต้องมันต้องการเครื่องมือบรรทัดคำสั่ง Xcode
svnm

2
ขอบคุณทำงานให้ฉันคุณถูกต้องเครื่องมือบรรทัดคำสั่ง Xcode เป็นกุญแจสำคัญ
sarcom

5
สิ่งนี้ใช้ได้กับฉันด้วยการเพิ่มหนึ่งครั้ง - คุณต้องเริ่มต้น XCODE จริง ๆ เพื่อที่คุณจะสามารถยอมรับข้อตกลงสิทธิ์การใช้งานและปล่อยให้การตั้งค่าเสร็จสิ้น อาจคุ้มค่าที่จะติดแท็กให้กับคำตอบของคุณ
Bruford

การยอมรับการอัปเดต (ข้อกำหนดของข้อตกลง) ผ่านทาง GUI ก็ใช้งานได้เช่นกัน
cassioscabral

ใน MacBook Pro ที่ได้รับการปรับปรุงล่าสุดของ Sierra 10.12.6 ฉันต้องใช้ "sudo xcodebuild -license" เพื่อยอมรับข้อกำหนดและเงื่อนไขก่อนใช้งาน sudo gem install compass ....
พฤศจิกายน

46

วิธีที่ดีที่สุดคือsudo apt-get install ruby-compassติดตั้งเข็มทิศ


1
ว้าวบางครั้งมันง่ายมาก ^^ พยายามติดตั้งเข็มทิศด้วยอัญมณี แต่มีบางสิ่งที่ไม่สามารถแก้ไขได้ด้วยอัญมณี ด้วย 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

และนั่นก็ทำ หวังว่ามันจะเหมาะกับคุณเช่นกัน!


ฉันเพิ่งมีปัญหาเดียวกัน แต่มีรุ่นที่ใหม่กว่า สิ่งที่ฉันได้คือการถอนการติดตั้งรุ่นทับทิมผมติดตั้งก่อนหน้านี้กับความถนัดและจากนั้นผมติดตั้งมันอีกครั้งกับคำแนะนำต่อไปนี้ได้ที่: rvm.io/rvm/install ด้วยเข็มทิศรุ่น ruby ​​/ rvm ใหม่ที่สร้างขึ้นอย่างถูกต้อง
adosaiguas

2
ขอบคุณสำหรับสิ่งนี้มีประโยชน์มาก ฉันเปลี่ยนขั้นตอนที่ 3 rvm install ruby-2.1.2เป็น 1.9.3 จะไม่ได้รับการอัปเดตอีกต่อไป
timelf123

24

สำหรับผมที่จะแก้ปัญหานี้ผมต้องให้แน่ใจว่าผมมีรุ่นล่าสุดของทับทิมและอัญมณีgem update --system; แล้วผมก็มีเพื่อให้แน่ใจว่า Xcode xcode-select --installและเครื่องมือบรรทัดคำสั่งได้ถูกติดตั้ง:


xcode-select --installเสร็จสิ้น แต่ไม่สามารถแก้ปัญหาได้สำหรับฉัน
Ade


10

สวัสดีมันเป็นความท้าทายที่จะทำให้มันใช้งานกับ Mac ได้แล้วนี่เป็นวิธีแก้ปัญหา

  1. ติดตั้งmacports
  2. ติดตั้งrvm
  3. รีสตาร์ท Terminal
  4. เรียกใช้rvm requirementsจากนั้นเรียกใช้rvm install 2.1
  5. และขั้นตอนสุดท้ายในการวิ่ง gem install compass --pre

ฉันไม่แน่ใจ แต่รุ่นทับทิมใน Mavericks ไม่สนับสนุนส่วนขยายเนทิฟ ฯลฯ ... ดังนั้นหากคุณชี้ไปที่รุ่นทับทิมอื่น ๆ เช่นฉัน "2.1" มันใช้งานได้ดี


ฉันอยากจะแนะนำไม่ใช้ macports
Nomis

6

ไม่แน่ใจว่าทำไมไม่มีสิ่งเหล่านี้ถูกทำเครื่องหมายเป็นคำตอบที่ถูกต้อง แต่ฉันลงจอดที่นี่ผ่านการค้นหาของ Google ดังนั้นฉันจะผ่านสิ่งที่ฉันรู้ ...

วิธีการ @ paul_g ใกล้เคียงกับฉันแล้วขั้นตอนของฉันสำหรับ Mac osx10.9 Retina:

  • ติดตั้ง macports
  • ติดตั้ง rvm (เสถียรพร้อมกับ ruby ​​add --insecureflag สำหรับปัญหาที่เกี่ยวข้องกับ SSL) $\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • รีสตาร์ท Terminal / ทรัพยากรโปรไฟล์ของคุณ
  • เรียกใช้rvm requirements --with-gcc=clangคุณจะไม่ต้องอัปเดตทับทิมเพราะคุณดาวน์โหลดรุ่นเสถียรล่าสุด
  • และขั้นตอนสุดท้ายในการวิ่ง gem install compass --pre

5

หากคุณใช้ Ubuntu คุณควรลองติดตั้ง build-essential

apt install build-essential

ฉันมีปัญหากับการติดตั้งอัญมณีในการติดตั้งอูบุนตูใหม่และวิธีนี้ใช้ได้สำหรับฉัน


ผมมีปัญหาเหมือนกัน. บางคนควรโหวตขึ้น
ตัวเรียงลำดับ

4

คุณอาจต้องติดตั้งเครื่องมือบรรทัดคำสั่งของ Apple ซึ่งอาจไม่ได้ติดตั้งบนระบบของคุณตามค่าเริ่มต้น ฉันได้รับข้อผิดพลาดเดียวกัน แต่ก่อนที่จะทำตามคำแนะนำใด ๆ ที่นี่ฉันติดตั้งเครื่องมือบรรทัดคำสั่ง (เนื่องจากปัญหาที่ไม่เกี่ยวข้อง) และแท้จริงและเห็นการติดตั้งเข็มทิศโดยไม่มีปัญหาเมื่อฉันลองอีกครั้ง YMMV


สิ่งนี้แก้ไขปัญหาข้างต้นสำหรับฉันดังนั้นฉันจะบอกว่านี่เป็นคำตอบที่ยอมรับได้สำหรับคำถามข้างต้น
Peter J Harrison

4

ในการติดตั้ง Compass บน Yosemite คุณต้องตั้งค่าสภาพแวดล้อม Ruby และติดตั้งเครื่องมือบรรทัดคำสั่ง Xcode แต่สิ่งที่สำคัญที่สุดหลังจากการปรับปรุง Xcode, ให้แน่ใจว่าได้เปิดโปรแกรม Xcode และยอมรับเงื่อนไขการอนุญาตให้แอปเปิ้ล มันจะทำการติดตั้งส่วนประกอบให้เสร็จสมบูรณ์ หลังจากนั้นคุณสามารถติดตั้ง Compass: 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 --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
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

ในโยเซมิตีสิ่งที่คุณต้องทำคือติดตั้งเครื่องมือบรรทัดคำสั่ง จากนั้นก็ใช้งานได้

แม้ว่าอัญมณีอื่น ๆ จะติดตั้งได้ดีก็ตาม คุณต้องเรียกใช้ xcode-select - ติดตั้งเพื่อให้ gem install compass ทำงานได้

โชคดี.


2

ใน Mac OS X 10.9 หากคุณลองxcode-select --installคุณจะได้รับข้อผิดพลาดต่อไปนี้:

ไม่สามารถติดตั้งซอฟต์แวร์ได้เนื่องจากไม่สามารถใช้งานได้จากเซิร์ฟเวอร์ Software Update

วิธีแก้ไขคือดาวน์โหลดเครื่องมือบรรทัดคำสั่ง (OS X 10.9) โดยตรงจากเว็บไซต์ Apple: https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

จากนั้นคุณจะสามารถติดตั้งเครื่องมือบรรทัดคำสั่งรุ่นล่าสุดได้


2

ใน Ubuntu 14.04 ในขณะที่รันapt-get install rubygemsมีข้อผิดพลาด

E: แพ็คเกจ 'rubygems' ไม่มีตัวเลือกการติดตั้ง

ทำตามคำสั่งแก้ปัญหา

sudo apt-get install gcc ruby-devel การรวมทับทิม rubygems


2

ลองbrew install coreutilsดู

ฉันพบปัญหานี้แล้วในขณะที่กำลังสร้างโครงการ sass / compass ขึ้นมาใหม่ซึ่งเพิ่งได้รับการปรับปรุงให้เป็นทับทิม 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 แล้ว Bundler ก็สามารถเสร็จสิ้นและติดตั้งเข็มทิศและการพึ่งพาได้สำเร็จ

ตอนจบ.



2

เมื่อไหร่

gem ติดตั้งทับ

จะทำงานด้วยข้อผิดพลาดนี้ได้รับการวางใน terminal

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 แต่ฉันสามารถแก้ไขได้โดยถอนการติดตั้ง 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

ติดตั้งทับทิมอีกครั้ง

sudo apt-get install ruby2.2

ติดตั้ง Compass

sudo gem install compass

คำสั่งสุดท้ายถูกดำเนินการด้วยความสำเร็จ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.