Gem install compass - Не удалось создать собственное расширение gem

gem install compass - Не удалось создать собственное расширение gem, как показано ниже в Терминале:

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.

[ОБНОВЛЕНИЕ 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

конец [ОБНОВЛЕНИЕ 2]

=====

[ОБНОВЛЕНИЕ 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 с полными разрешениями на чтение и запись.

НЕ УДАЛОСЬ!

конец [ОБНОВЛЕНИЕ 1]

=====

после получения ошибки собственного расширения я последовал

compass -v compass: Command not found.

Я скачал и установил приложение compass.app, которое теперь отображается в строке меню. Я даже создал Compass Project для одного из моих не дерзких проектов.

Итак, как 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.

Заранее спасибо за спасение моего разума...


1
2 323
2

Ответы:

Ошибки в исходном посте связаны с неправильно настроенной средой Ruby и с установкой компаса с sudo. Вы никогда не должны использовать sudo для установки драгоценных камней, независимо от того, сколько раз вы видите его в качестве принятого ответа на Stack Overflow. Вот почему.

На высоком уровне настройка правильной среды разработки Ruby на Mac включает шесть шагов:

  1. Установите Homebrew (который также устанавливает необходимые инструменты командной строки Apple)
  2. Установите менеджер Ruby (например, chruby, rbenv, asdf, RVM) — большинство из них можно установить с помощью Homebrew.
  3. Настройте менеджер Ruby, добавив соответствующие строки в ваш файл оболочки (~/.bash_profile или ~/.zshrc) — у каждого менеджера есть инструкции для этого, и это типичный шаг, который люди пропускают.
  4. Перезапустите терминал (или откройте новую вкладку), чтобы изменения оболочки вступили в силу — еще один шаг, который часто упускают из виду.
  5. Установите определенную версию Ruby с помощью менеджера Ruby.
  6. Переключитесь на эту версию Ruby с помощью менеджера Ruby.

Лично я предпочитаю грубый с рубиновая установка. Для получения более подробной информации и сценария, который может автоматизировать весь этот процесс, ознакомьтесь с моим ответом здесь: https://stackoverflow.com/a/54873916/928191


Я не уверен, но вы установили build-essential перед попыткой установить этот гем? Это общая проблема для пользователей Linux

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

sudo apt-get install build-essential

а затем установите драгоценный камень

sudo gem install compass

Я сделал простой тест с помощью докера, и он работает только тогда, когда я его устанавливаю, например:

Не работает

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?

Пакет build-essentials — это справочник по всем пакетам, необходимым для компиляции пакета Debian. Обычно он включает компиляторы и библиотеки GCC/g++ и некоторые другие утилиты. Проверьте документацию: Здесь!