宝石安装指南针-无法构建宝石本机扩展,如下图所示在终端中:
johnlove% gem install compass
ERROR: Error installing compass:
ERROR: Failed to build gem native extension.
[基本知识]
[Macintosh:~] johnlove% which ruby
/usr/bin/ruby
[Macintosh:~] johnlove% which sass
/usr/local/bin/sass
[Macintosh:~] johnlove% which scss
/usr/local/bin/scss
[Macintosh:~] johnlove% which compass
compass: Command not found.
[更多基本知识]
[Macintosh:~] johnlove% sass -v
Sass 3.5.5 (Bleeding Edge)
[Macintosh:~] johnlove% scss -v
Sass 3.5.5 (Bleeding Edge)
[Macintosh:~] johnlove% ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
[Macintosh:~] johnlove% compass -v
compass: Command not found.
[UPDATE 2]
在终端中进行了此操作
sudo gem install -n /usr/local/bin compass
后退
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -I /Library/Ruby/Site/2.3.0 -r ./siteconf20190130-2612-nh9d7t.rb extconf.rb
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/universal-darwin18/rbconfig.rb:215: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040757
checking for ffi.h... no
checking for ffi.h in /usr/local/include,/usr/include/ffi... no
checking for shlwapi.h... no
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
creating extconf.h
creating Makefile
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
make "DESTDIR=" clean
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
make "DESTDIR="
Running autoreconf for libffi
/Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c/libffi/autogen.sh: line 2: exec: autoreconf: not found
make: *** ["/Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c/libffi-universal-darwin18"/.libs/libffi_convenience.a] Error 127
make failed, exit code 2
结束[UPDATE 2]
=====
[UPDATE 1]
我了解到我的路径可能设置不正确,所以我跑了:
gem env
然后回来:
RubyGems Environment:
- RUBYGEMS VERSION: 3.0.2
- RUBY VERSION: 2.3.7 (2018-03-28 patchlevel 456) [universal.x86_64-darwin18]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.3.0
- USER INSTALLATION DIRECTORY: /Users/johnlove/.gem/ruby/2.3.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
- GIT EXECUTABLE: /usr/bin/git
- EXECUTABLE DIRECTORY: /usr/bin
- SPEC CACHE DIRECTORY: /Users/johnlove/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-18
- GEM PATHS:
- /Library/Ruby/Gems/2.3.0
- /Users/johnlove/.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:
- /Library/Frameworks/Python.framework/Versions/Current/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
如果我的路径弄乱了,我应该怎么找?
另一个谜?
sudo gem install compass
回来了吗?
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
我试图创建一个具有完全读写权限的本地usr / local / bin目录。
失败!
结束[UPDATE 1]
=====
出现本机扩展错误后,我紧跟着
compass -v compass: Command not found.
我下载并安装了罗盘.app,它现在出现在菜单栏中。我什至为我的一个无聊项目创建了一个指南针项目。
那么,如何在没有宝石罗盘的情况下成功安装Compass.app?
尝试过他的...
sudo gem update --system
将其退回...
Latest version already installed. Done.
然后,我尝试了此操作:
sudo apt-get install ruby-dev
知道了这一点:
apt-get: command not found
我确实是这样做的:
xcode-select --install
回来:
command line tools are already installed
我想我不能将其归咎于Xcode。
预先感谢您的救助...
答案 0 :(得分:0)
macOS随Ruby(以及许多其他开放源代码工具)一起安装。但是,默认情况下,Mac不允许您随它安装任何gems,因为它并不意味着要进行修改。除了/System/Library
以外,Apple在/usr/
和/usr/local/
文件夹中安装的所有内容都是macOS的一部分,并且只能由Apple管理。
强烈建议不要使用sudo
安装gem,或更改系统文件和目录的权限。否则,任何建议都应视为坏建议。
该解决方案涉及两个主要步骤:
PATH
,以使新Ruby版本的位置位于PATH
中。目录列表以及计算机查找可执行程序的顺序称为PATH
。如果在终端中输入echo $PATH
,将看到目录列表,以冒号分隔。有几种方法可以执行此操作。我建议并希望在诸如Compass之类的gem的安装文档中更流行的最佳方法是使用automated script,它将为您设置合适的环境。这样可以大大减少由于指令不足而导致出错的可能性,这些指令会使用户手动执行大量操作,而让他们自己去理解所有必要的步骤。
其他选择包括手动安装工具以及使用工具所需的适当~/.bash_profile
和/或命令更新PATH
。首先,我建议安装Homebrew,这样可以轻松安装其他工具和macOS应用程序。
然后,安装单独的Ruby版本的4种最流行的方法是:
brew install ruby
安装ruby,然后通过运行PATH
,然后是echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
chruby和ruby-install-我的个人建议以及上述脚本自动安装的建议。这些可以与Homebrew一起安装。
rbenv-可以与Homebrew一起安装
要检查您是否正在使用非系统版本的Ruby,可以运行以下命令:
which ruby
应该不是/usr/bin/ruby
ruby -v
应该不是2.3.7。到目前为止,2.6.1是最新的Ruby版本。
答案 1 :(得分:0)
我不确定,但是在尝试安装此gem之前,您是否安装了build-essential?对于Linux用户来说这是一个常见问题
尝试在安装该gem之前先安装它,例如:
sudo apt-get install build-essential
然后安装gem
sudo gem install compass
我使用docker做了一个简单的测试,并且仅在安装时有效,例如:
无效
docker run -it bash ubuntu:16.04 bash
apt-get update
apt-get install ruby2.3 ruby2.3-dev -y
gem install compass
有效
docker run -it bash ubuntu:16.04 bash
apt-get update
apt-get install build-essential ruby2.3 ruby2.3-devel
gem install compass
为什么要构建必需品?
build-essentials软件包是编译Debian软件包所需的所有软件包的参考。它通常包括GCC / g ++编译器和库以及其他一些实用程序。查看文档:{{3}}