【问题标题】:gem install compass error after Mac OS Sierra 10.12.6 updateMac OS Sierra 10.12.6 更新后 gem install compass 错误
【发布时间】:2018-11-17 09:49:07
【问题描述】:

几天前,我做了一个 Mac OS Sierra 10.12.6 安全更新 2018-005。昨天我咕哝着跑了一个:

Warning: Running "sass:dist" (sass) task
Warning: spawn sass ENOENT Use --force to continue.

Aborted due to warnings.

我按照这里的说明进行操作:https://github.com/appseed-io/supermodular/issues/45

xcode-select --install
sudo gem update --system
sudo gem install -n /usr/local/bin compass

我仍然收到咕噜咕噜的错误:

Running "sass:build" (sass) task
ERROR: Cannot load compass.
Warning: Exited with error code 1 Use --force to continue.

Aborted due to warnings.

然后我按照这里的说明进行操作:https://halfelf.org/2017/grunt-cant-build-sass-on-high-sierra/

brew install rbenv ruby-build

rbenv install 2.4.2
rbenv global 2.4.2

sudo gem update --system

sudo gem install -n /usr/local/bin sass

仍在抱怨ERROR: Cannot load compass.

然后再次尝试sudo gem install -n /usr/local/bin compass,但得到以下错误:

ERROR:  Error installing compass:
ERROR: Failed to build gem native extension.

我检查了 mkmf.log 文件,上面写着:

"pkg-config --exists libffi"
package configuration for libffi is not found
"xcrun clang -o conftest -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/universal-darwin16 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/backward -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -g -Os -pipe -DHAVE_GCC_ATOMIC_BUILTINS -iwithsysroot /usr/local/libressl/include conftest.c  -L. -L/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib -L.             -L /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.Internal.sdk/usr/local/libressl/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.Internal.sdk/usr/local/lib   -arch x86_64 -arch i386   -lruby.2.3.0  -lpthread -ldl -lobjc "
In file included from conftest.c:1:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/ruby.h:24:10: fatal error: 'ruby/config.h' file not found
#include "ruby/config.h"
         ^~~~~~~~~~~~~~~
1 error generated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

我从中得到的(不是真的知道)是package configuration for libffi is not foundfatal error: 'ruby/config.h' file not found

附加信息:

Xcode 版本 9.2 (9C40b)

ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin16]

sass -v
Sass 3.4.25 (Selective Steve)

compass -v
-bash: /usr/local/bin/compass: 
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory

提前致谢。

更新

我跑了gem env。这是输出:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.8
  - RUBY VERSION: 2.3.7 (2018-03-28 patchlevel 456) [universal.x86_64-darwin16]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.3.0
  - USER INSTALLATION DIRECTORY: /Users/username/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - SPEC CACHE DIRECTORY: /Users/username/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-16
  - GEM PATHS:
     - /Library/Ruby/Gems/2.3.0
     - /Users/username/.gem/ruby/2.3.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/gems/2.3.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/username/.nvm/versions/node/v8.4.0/bin
     - /Users/username/.wp-cli/bin
     - /usr/local/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

【问题讨论】:

  • 粘贴以下输出。 gem env。听起来您的$PATH 设置不正确,这通常是rbenv 的问题。
  • 感谢@lacostenycoder。我用gem env 输出更新了问题。
  • @lacostenycoder 似乎它试图在与未安装 ruby​​ 的目录不同的目录中查找指南针。如何更正$PATH
  • 查看更新的答案

标签: ruby macos sass gruntjs compass


【解决方案1】:

不要做sudo gem install -n /usr/local/bin compass

使用rbenv 的全部意义在于让它处理您的所有依赖项,而不必处理您的操作系统系统红宝石或宝石。您需要正确配置$PATH,然后您就不需要使用sudo,事实上,在正确设置环境后,您不应该使用gem install 或任何gem 命令。

你有没有碰巧尝试npm install -g grunt-cli

更新:正如预期的那样,您的 $PATH 不正确。

关闭所有终端。开始一个新的。然后运行它。

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

这应该可以帮助您找出$PATH 设置中的问题。 参考https://github.com/rbenv/rbenv#installation

不过先具体试试:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

然后重启你的终端并再次检查gem env,看看你的路径是否包含.rbenv

如果这些步骤不能让你工作,那么我建议fully uninstall rbenv 并从https://github.com/rbenv/rbenv#installation 的第 1 步重新开始

【讨论】:

  • 感谢您对rbenv 的澄清。我试过npm install -g grunt-cli,但得到相同的ERROR: Cannot load compass.
  • 谢谢,这成功了!我更新了$PATH 设置。然后能够运行 gem update --system 然后 gem install compass 现在 grunt 编译。
  • 太棒了!您最终是否必须重新安装 rbenv 或只是更新您的 $PATH
  • 不,不必重新安装rbenv。一开始我没有正确设置它。 rbenv-doctor 说运行rbenv init 然后将eval "$(rbenv init -)" 添加到.bash_profile。然后我像你说的那样添加了echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile。然后一切顺利!
猜你喜欢
  • 2018-05-03
  • 2017-02-03
  • 2017-03-13
  • 2018-04-11
  • 2018-04-02
  • 2018-05-07
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
相关资源
最近更新 更多